a.在android 中,view 是屏幕显示的基础,比如 button,文本,列表,输入框都是 view。在Flutter 中就对应着 widget
widget 不等于 view。它是一种声明和构建 ui 的方式,
不同:1.widget 和 view 的生命周期是不同的,widget 是不可变的。
如果需要变化,就生命周期终止。任何时候需要变化,flutter 都会创建一个新的实例。 对比来看,Android的 view 就只绘制一次,除非主动调用 invalidate。
2.flutter 的 widget 很轻量,原因是:widget 不是视图,也不直接绘制内容,它只是一个对UI和底层创建真正视图对象的语义描述而已。
3.flutter 支持 material components 库,提供了实现 materail design设计规范的wisgets。也支持 ios 的cupertino widgets 来开发 ios 应用。
a.在Android 中,view 是可以直接更新的, flutter 不行,因为 flutter 是不可变的,无法更新。
就需要操作 widgets 的状态来做。
就分为了:
1.无状态 widget statelessWidget :
用来做不做改变的 widget 显示:比如一个图标显示的ImageView 从来不会改变,就用 statelessWidget
2.有状态 widget statefulWidget
如果控件是需要被改变的, 就需要 statefulwidget,
比如我们需要根据接口,来对 widget 赋值。 并告诉 widget 的 state 更新了,就会更新。
两种 widget 在行为上一致,每一帧都会重建。可变的 widget:statfulwidget 有一个可以跨帧存储和 state 对象来恢复状态数据。