程序员

Flutter (三) 状态管理

2020-01-06  本文已影响0人  MissBear灬
简介:Flutter 界面状态分为无状态和有状态两种
1.无状态(StatelessWidget):界面一旦渲染出来就不会再改变
2.有状态(StatefulWidget) :界面可以随着数据的变化而变化
1.StatelessWidget(无状态)

在build(BuildContext context) 里面子部件的样式或者状态是不会再发生改变。 如果想改变必须将StateManagerDemo干掉、重新创建一个.事例代码如下:

class StateManagerDemo extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Container();
  }
}
2.StatefulWidget(有状态)

StatefulWidget就会告诉Flutter 下面代码中StateManagerDemo 是会发生变化的.事例代码如下:

//描述UI  定义外观的  这个类里面显示什么样子是由下面_SMDState这个状态管理者说了算
class StateManagerDemo extends StatefulWidget {
  //构造方法
  @override
  State<StatefulWidget> createState() {
    return _SMDState();//返回状态管理者
  }
}

//管理状态    当_SMDState里面的数据发生变化的时候。就会刷新上面StateManagerDemo
class _SMDState extends State<StateManagerDemo>{
  //状态-->数据
  int count = 0;
  @override
  Widget build(BuildContext context) {
    return  Scaffold(
      appBar: AppBar(
        title: Text('StateMangerDemo'),
      ),
      body: Center(
        child: Chip(label: Text('$count')),
      ),
      floatingActionButton: FloatingActionButton(
        child: Icon(Icons.add),
        onPressed: (){
          count += 1;
          setState(() {});//重新刷新(渲染)!
          print('count = $count');
        },
      ),

    );
  }
}

注:上面方法是成对出现的。当数据改变刷新界面时需要调用{setState(() {});(重新刷新(渲染)!)}

更形象的描述上述(有状态的)两个方法可以通俗的理解为:
1.比如StateManagerDemo 里面指定义了Label 和 Image 等
2._SMDState 里面会将Label 和 Image 等需要显示成什么样子渲染出来

QQ:522608370

Flutter (二)布局
Flutter (三) 状态管理
Flutter (四) Map转模型
Flutter (五) 网络请求
Flutter (六) 保留界面状态
Flutter (七) 混合开发 [配置]
Flutter (八) 混合开发 [Flutter完整项目嵌入到原生]

上一篇下一篇

猜你喜欢

热点阅读