美文网首页程序员
Flutter (三) 状态管理

Flutter (三) 状态管理

作者: MissBear灬 | 来源:发表于2020-01-06 22:57 被阅读0次
    简介: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完整项目嵌入到原生]

    相关文章

      网友评论

        本文标题:Flutter (三) 状态管理

        本文链接:https://www.haomeiwen.com/subject/evbkactx.html