Flutter学习日记

Flutter 一切皆widget

1.AppBar属性

leading:导航栏左返回视图(widget),默认push到下一个页面,左视图自带返回箭头,点击方法系统已实现。

但是最外层 是 return MaterialApp(); 包裹,是没有返回按钮的

如果要自定义图标:

leading: IconButton(
        disabledColor: Colors.red,
        icon: Icon(Icons.menu),
         onPressed: null
    ),

IconButton 本来单独写一篇文章,但是写成笔记先记着
IconButton 设置颜色的时候,注意 onPressed 是否实现,为了习惯统一,可以默认设置 onPressed:(){}; 为什么这样说呢?接着往下看:

Color:
设置了图标点击回调,则用于按钮内图标的颜色;

highlightColor:
按钮处于向下(按下)状态时按钮的辅助颜色;

splashColor
按钮处于向下(按下)状态时按钮的主要颜色;

disabledColor:
没设置图标点击回调,则用于按钮内图标的颜色
  IconButton(
  //onPressed 为null,图标颜色默认为灰色调,可以通过disabledColor设置此时图标颜色
  //onPressed 非null,图标颜色默认为白色,可以通过color设置此时图标颜色
  //其他状态颜色设置,参考前面颜色介绍
  //    color: Colors.red,
      disabledColor: Colors.green,
      icon: Icon(Icons.add),
      onPressed: null
      )

注意点:
设置title ,默认居中,但是当我们设置 actions 个数大于等于2的时候,title会偏移,所以这句 centerTitle: true 还是需要写上的

2.问题:

学习过程不断尝试,以iOS职业思维去搞,发现问题:
场景:首页导航栏,此时外层是MaterialApp,自定义leading属性,创建一个IconButton ,整体架构是:

MaterialApp(

    -home: Scaffold(
    
    appBar: new AppBar(
      leading: 自定义
      ......使用Navigator.push报错
      
      但是body 里面使用Navigator.push 正常

push到一个新Widget,
报错信息:

Navigator operation requested with a context that does not include a Navigator.

百度,但是看到一个复杂的方案
外层使用StatelessWidget ,将路由跳转功能封装到StatefulWidget中 ??看完代码(具体自己百度),我的天,这么麻烦,如果是后期加的需求,肯定要加班搞,放弃,寻找更简便方法,没办法,偷懒一下,站在巨人肩上看的远,但是,得换个巨人了,那就换

image

在需要点击跳转的子View外部包一层Builder如下:

child: Builder(builder: (context) {
  return GestureDetector(
    onTap: () {
      Navigator.push(context, MaterialPageRoute(builder: (context)=>NewWigets()));
    },
    child: Text("自己想"),
  );
}   

上述是思路,我得 根据我实际场景改代码,信手捏来:

   leading: Builder(builder: (context) {
   return GestureDetector(
  // 这是照着实验检测可行,注释一下了
//              onTap: () {
//                Navigator.pushNamed(context, tableVC);
//              },
//              child: Icon(Icons.menu),
//    我来自定义一下,
     child:  IconButton(
       disabledColor: Colors.red,
       icon: Icon(Icons.menu),
       onPressed:(){
//                   Navigator.pushNamed(context, tableVC);
         Navigator.push(context, MaterialPageRoute(builder: (context)=>DetailWigets()));
        },
     )
   );
 },

代码复制过去就可以直接用,就是那么优秀,注释掉的代码可以删掉,跳转的DetailWigets记得换哈,【斜眼笑】

模糊的学习了一些,到处看了看,简单的学了几个UI控件,暂时没有记录,只是记录了刚入门碰到的问题,后续会记录UI ,布局,网络,实战等app的相关内容

针对环境配置,一直想学flutter,基于没有太多精力和心思,环境早就配置好了,就没有记录了,百度就可以弄好,毕竟mac配置下来还是简单。

mac电脑 + Xcode + AndroidStudio ,VS Code 我也装了,但是用AndroidStudio就很好的支持编写flutter了, flutter和 Android 一个厂里的,自己人嘛,工具选个喜欢的就行。

                   路漫漫其修远兮,吾将上下而求索
                        ——致程序员逝去的青春

你可能感兴趣的:(Flutter学习日记)