一个小型网站设计,青州企业网站建设,设计公司的企业文化内容,软件营销网站1、Flutter中常用 Widget 2、StatelessWidget 和 StateFulWidget
Flutter 中的 widget 有很多#xff0c;但主要分两种#xff1a;
StatelessWidget无状态的 widget如果一个 widget 是最终的或不可变的#xff0c;那么它就是无状态的StatefulWidget有状态的 widget如果一个…1、Flutter中常用 Widget 2、StatelessWidget 和 StateFulWidget
Flutter 中的 widget 有很多但主要分两种
StatelessWidget无状态的 widget如果一个 widget 是最终的或不可变的那么它就是无状态的StatefulWidget有状态的 widget如果一个 widget 会被用户交互或数据导致状态改变那么它就是有状态的
2.1、StatelessWidget
Text、AboutDialog、CircleAvatar 等都是 StatelessWidget 的子类
无状态 widget 通常会在 3 种情况下使用
(1) 将 widget 插入树中时 (2) 当 widget 的父级更改配置时 (3) 当它依赖的 InheritedWidget 发生改变时
代码示例
//无状态 widget
class LeonStateLessWidget extends StatelessWidget {final String text;const LeonStateLessWidget({super.key, required this.text});overrideWidget build(BuildContext context) {return Center(child: Text(text,style: const TextStyle(color: Colors.yellow, fontSize: 26),),);}
}2.2、StatefulWidget
TextField、Checkbox、Radio、Form、Slider、InkWell 等都是 StatefulWidget 的子类StatefulWidget 使用 setState 方法管理状态变化调用 setState 方法告诉 Flutter 框架某个状态发生了改变Flutter 会重新运行 build 方法createState() 方法会创建一个管理 widget 状态的状态对象 _xxxState_xxxState() 类会实现 widget 的 build 方法
代码示例
//有状态 widget
class LeonStatefulWidget extends StatefulWidget {const LeonStatefulWidget({super.key});overrideStateLeonStatefulWidget createState() _LeonStatefulWidgetState();
}class _LeonStatefulWidgetState extends StateLeonStatefulWidget {var count 0;overrideWidget build(BuildContext context) {return Center(child: Column(children: [Text(点击次数: $count),ElevatedButton(onPressed: _onClick, child: const Text(点我))],),);}void _onClick() {setState(() {count;});}
}2.3、代码示例 import package:flutter/material.dart;
import package:zlzf/widget.dart;void main() {runApp(const MyApp());
}class MyApp extends StatelessWidget {const MyApp({super.key});overrideWidget build(BuildContext context) {return MaterialApp(title: Leon Demo,theme: ThemeData(primarySwatch: Colors.blue,),home: Scaffold(appBar: AppBar(title: const LeonStateLessWidget(text: Widget 学习,),),body: const LeonStatefulWidget()));}
}3、补充
Flutter 中状态管理的 3 中主要方式
每个 widget 管理自己的状态如果所讨论的状态是用户数据例如复选框的已选中或未选中状态或滑块的位置则状态最好由父widget管理父 widget 管理 widget 的状态如果widget的状态取决于动作例如动画那么最好是由widget自身来管理状态混合搭配管理见机行事