StatelessWidget和StatefulWidget是flutter的基础组件,日常开发中自定义Widget都是选择继承这两者之一。
两者的区别在于状态的改变,StatelessWidget面向那些始终不变的UI控件,比如标题栏中的标题;而StatefulWidget则是面向可能会改变UI状态的控件,比如有点击反馈的按钮。
一、无状态组件
无状态的组件里面的元素一般是不会发生改变的,比如标题栏中的标题,文章中的文字等等
无状态组件中没有State,不可以使用 setState( ) 的方法
如果用无状态组件来开发计数器这一功能,会发现
虽然类中对应的计数属性值已经加了一,但是视图层中数据还是不会改变。
class HomeContent extends StatelessWidget {
const HomeContent({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Container();
}
}
二、有状态组件
有状态组件可以对UI进行刷新
并且在创建的时候需要指定一个State
需要更新组件UI的时候
调用 setState() 的方法即可
class HomeContent extends StatefulWidget {
const HomeContent({Key? key}) : super(key: key);
@override
_HomeContentState createState() => _HomeContentState();
}
class _HomeContentState extends State<HomeContent> {
@override
Widget build(BuildContext context) {
return Container();
}
}