美文网首页
flutter3 State

flutter3 State

作者: f8d1cf28626a | 来源:发表于2022-07-13 02:38 被阅读0次

flutter3 状态管理

Whiget State Manage

  • widget 被创建出来就是没有状态的,因其使用的是增量渲染的方式,替换掉有改变的widget

问题:需要保留原来的数据怎么办呢? 这就涉及到今晚的重磅 有状态的Widget

state widget

  • 渲染逻辑 和 数据逻辑 分开管理

    • 保留数据逻辑,不保留渲染逻辑
  • state widget for StatefulWidget

StatefulWidget

  • StatelessWidget 改为 StatefulWidget
class SharedCenter extends StatelessWidget{}

改为

class SharedCenter extends StatefulWidget{}
  • 重点 需要将自定义的MyApp类装入State, 如:State<MyApp>

    • Home 里面的内容必须全是StatefulWidget
    • 实时动态 setState((){});
  • floatingActionButton 悬浮按钮的使用

// MyApp
class KWidgetStateManage extends StatefulWidget {
  const KWidgetStateManage({Key? key}) : super(key: key);

  @override
  State<StatefulWidget> createState() => _KStateManage();
}
 // 状态管理者
class _KStateManage extends State<KWidgetStateManage>{
  static num count = 0;
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return MaterialApp(
      debugShowMaterialGrid: false,
      debugShowCheckedModeBanner: false, // 清除斜杠
      home: Scaffold(
        backgroundColor: Colors.white,
        appBar: AppBar(title: const Text('hello flutter'),),
        body: Center(
            child: Chip(label: Text('state flutter $count'),)
        ),
        floatingActionButton: FloatingActionButton(onPressed: (){setState((){
          count+=1;
        });},child: const Icon(Icons.add),),
      ),
    );
  }
}
---------------------------------------------------
main.dart中

void main() => runApp(const MyApp());

class MyApp extends StatelessWidget{
  // key 保证了唯一定位,解除了增量渲染可能带来的bug
  const MyApp({Key? key}) : super(key: key);
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return const KWidgetStateManage();
  }
}

总结:

  • 1.状态管理类需要设置为私有不给外界访问,外界只能访问StatefulWidget拓展的类(class)
  • 2.状态管理类继承了 State<这里是自定义的StatefulWidget拓展的类>
  • 3.Home widget的设置需要在状态管理类的内部,否则无法做到实动态更新
    1. floatingActionButton的onPressed 添加回调函数(){}
    1. floatingActionButton 的回调函数中 添加setState 以便实时状态更新
  • 6.由于flutter的渲染机制是增量渲染,所以需要key保证节点渲染的唯一性,可以理解为每添加一个构造方法key自增的过程,通过找到相对应的key实现替换witget并渲染新的widget(即O1的过程,所以很快,女孩子一般不太喜欢)

相关文章

网友评论

      本文标题:flutter3 State

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