Flutter 组件之StatefulWidget与StatelessWidget

末蓝、 2023-07-17 06:07 61阅读 0赞

在flutter中自定义组件其实就是一个类, 想要定义组件必须要继承StatefulWidget或StatelessWidget

  • StatefulWidget:有状态组件, 持有的状体可以再Widget生命周期中发生改变。只要我们想改变页面中的数据,这个时候就需要继承StatefulWidget类
  • StatelessWidget:无状态组件,状态不可改变
无状态组件
  1. //直接继承无状态组件的类就可以使用
  2. class StudyFlutter extends StatelessWidget {
  3. @override
  4. Widget build(BuildContext context) {
  5. // TODO: implement build
  6. return MaterialApp(
  7. home: Scaffold(
  8. appBar: AppBar(
  9. title: Text("我是头部的内容"),
  10. ),
  11. body: Text("无状态内容部分"),
  12. ),
  13. );
  14. }
  15. }
有状态组件

与Vue,React中的数据绑定很相似
下面这个案例通过点击按钮可以动态生成一个列表数据,数据视图实时更新

  1. class ShowListView extends StatefulWidget { //继承StatefulWidget主结构
  2. ShowListView({ Key key}) : super(key: key);
  3. @override//重写动态数据构建方法
  4. _ShowListViewState createState() => _ShowListViewState();
  5. }
  6. //定义私有函数来继承数据类就可以了
  7. class _ShowListViewState extends State<ShowListView> {
  8. List list = new List();
  9. //这里就是有状态组件的主要结构了,这里写你要定义的代码
  10. @override
  11. Widget build(BuildContext context) {
  12. return ListView(children: <Widget>[
  13. Column(
  14. children: this.list.map((value) {
  15. return ListTile(
  16. title: Text(value),
  17. );
  18. }).toList(),
  19. ),
  20. RaisedButton(
  21. onPressed: () {
  22. setState(() {
  23. this.list.add("我是第2条新闻");
  24. });
  25. },
  26. child: Text("submit"),
  27. )
  28. ]);
  29. }
  30. }

发表评论

表情:
评论列表 (有 0 条评论,61人围观)

还没有评论,来说两句吧...

相关阅读