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中 ??看完代码(具体自己百度),我的天,这么麻烦,如果是后期加的需求,肯定要加班搞,放弃,寻找更简便方法,没办法,偷懒一下,站在巨人肩上看的远,但是,得换个巨人了,那就换
在需要点击跳转的子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 一个厂里的,自己人嘛,工具选个喜欢的就行。
路漫漫其修远兮,吾将上下而求索
——致程序员逝去的青春