概念
- flutter中几乎所有的对象都是一个Widget,与原生开发中“控件”不同的是,Flutter中的widget的概念更广泛,它不仅可以表示UI元素,也可以表示一些功能性的组件如:用于手势检测的
GestureDetector
widget、用于应用主题数据传递的Theme
等等
Widget与Element
- Widget其实并不是表示最终绘制在设备屏幕上的显示元素,而只是显示元素的一个配置数据。实际上,Flutter中真正代表屏幕上显示元素的类是
Element
,也就是说Widget只是描述Element
的一个配置
Stateless Widget
- StatelessWidget相对比较简单,它继承自
Widget
,重写了createElement()
方法: - StatelessWidget用于不需要维护状态的场景,它通常在
build
方法中通过嵌套其它Widget来构建UI,在构建过程中会递归的构建其嵌套的Widget
Stateful Widget
和StatelessWidget一样,StatefulWidget也是继承自widget类,并重写了createElement()
方法,不同的是返回的Element
对象并不相同
另外StatefulWidget类中添加了一个新的接口createState()
State
一个StatefulWidget类会对应一个State类,State表示与其对应的StatefulWidget要维护的状态,State中的保存的状态信息可以:
- 在widget build时可以被同步读取。
- 在widget生命周期中可以被改变,当State被改变时,可以手动调用其
setState()
方法通知Flutter framework状态发生改变,Flutter framework在收到消息后,会重新调用其build
方法重新构建widget树,从而达到更新UI的目的。
Flutter widget库介绍
基础widget
- Text、Row、 Column、Container