优点:

  • 安卓上支持热更新
  • 性能较好
  • 在ios和android上没有兼容的问题

1. 组件分类:

  1. StatelessWidget
    表示无状态的组件, 当创建的 widget 不需要管理任何形式的内部 state 时
  2. StatefulWidget
    表示有状态的组件, 当创建一个能随时间动态改变的 widget,并且不依赖于其初始化状态

区别:

  1. Stateful widget 可以拥有状态,这些状态在 widget 生命周期中是可以变的,而 Stateless widget 是不可变的。
  2. Stateful widget 至少由两个类组成:
    一个 StatefulWidget 类。
    一个 State 类; StatefulWidget 类本身是不变的,但是 State 类中持有的状态在 widget 生命周期中可能会发生变化
  • Container: flutter开发中使⽤用频率最⾼高,它组合的widget,内部有绘制widget、定位widget、尺⼨寸

widget。

  • color:

Colors.red:取得正常颜⾊色 Colors.red[300]:代码.3透明度的颜⾊色,等同于Colors.red.shade300
Color(0X11111111)、Color.fromARGB(a, r, g, b)、Color.fromRGBO(r, g, b, opacity)

  • child: 子组件(Container里面没有子控件的时候它会填充整个屏幕,如果有子控件,Container就会自动适应子控件⼤小,并且一个Container只能容纳一个子控件,如果想容纳多个,需要设置Row、Column、Satck); | 方式 | 排列方式 | | —- | —- | | Row | 水平方向排列子控件 | | Column | 垂直方向排列子控件 | | Stack | 堆叠的方式排列子控件 | | IndexStack | 堆叠的方式排列子控件,通过index控制器显示哪个子控件 | | warp | 可以让子控件自动换行的控件 |

  • Aligment:对Container内部的子控件布局(Alignment、FractionalOffset、AligmentDirectional) 注:x轴从左往右递增、y轴从上往下递增 | 方式 | 排列方式 | | —- | —- | | Alignment | x、y轴(-1,1) | | FractionalOffset | x、y轴(0, 1) | | AligmentDirectional | 与TextDirection有关 |

Alignment:
2020-09-12_220544.png
FractionalOffset:
2020-09-12_220800.png

  • constraints:布局属性,主要讲的是怎么确定控件的⼤大⼩小,其中经常使⽤用的就是BoxConstraint;

BoxConstraints.expand()的作用是让子控件完全平铺显示在父控件上

  • Margin:其使用和RN类似,其使用在相邻的控件之间,主要用EdgeInsets
方式 排列方式
EdgeInsets.all() 设置上下左右的间距,距离相同
EdgeInsets.symmetric() 设置垂直和⽔水平⽅方向上的距离
EdgeInsets.fromLTRB() 设置left, top, right,bottom边距
EdgeInsets.only() ⽤用于设置哪些是⾮非零的,不不设置默认是零
  • padding:用于设置主控件与内部空间之间的间距,和Margin一样主要用EdgeInsets
  • decoration:其主要用于设置边框、圆⻆角、阴影等,主要用BoxDecoration(注:如果设置了

decoration,则color不可以使用)

Image:显示图片的widget。

  • Image.asset:获取本地图片,注意ymal文件的设置
  • Image.file: 加载一个本地图片,比如相册中的图片
  • Image.network:获取网络图片

注:如果需要设置placeholder,则使⽤用FadeInImage

2. 路由

MaterialPageRoute 继承自 PageRoute 类,PageRoute 类是一个抽象类,表示占有整个屏幕空间的一个模态路由页面,它还定义了路由构建及切换时过渡动画的相关接口及属性。

3. Flutter 调试

debugPrint(args); debugDumpApp();