Flutter学习日记

Flutter 一切皆widget程序员

1.AppBar属性

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

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

若是要自定义图标:架构

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

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

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 仍是须要写上的less

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中 ??看完代码(具体本身百度),个人天,这么麻烦,若是是后期加的需求,确定要加班搞,放弃,寻找更简便方法,没办法,偷懒一下,站在巨人肩上看的远,可是,得换个巨人了,那就换ui

在须要点击跳转的子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 一个厂里的,本身人嘛,工具选个喜欢的就行。

路漫漫其修远兮,吾将上下而求索
                        ——致程序员逝去的青春复制代码
相关文章
相关标签/搜索