Flutter provider状态管理框架

官方解释:

依赖项注入(DI)和状态管理之间的混合,使用用于小部件的小部件构建。

它故意将小部件用于DI /状态管理,而不是仅使用dart类Stream。原因是,小部件非常简单,但功能强大且可扩展。

通过使用小部件进行状态管理,provider可以保证:

通过强制的单向数据流实现可维护性
可测试性/可组合性,因为始终可以模拟/覆盖值
健壮性,因为很难忘记处理模型/小部件的更新方案
 

目录

步骤一

步骤二

步骤三

步骤一
创建一个类,with一个ChangeNotifier,如:

//创建一个代理   它完成两个动作:1改变数据; 2刷新数据。
class MyChangeNotifier with ChangeNotifier {
  int _count = 15;
  int get count => _count;
 
  // 数据加操作
  void add() {
    if(_count < 100){
      _count++;
      notifyListeners();
    }
  }
  // 数据减操作
  void sub() {
    if(_count > 5){
      _count--;
      notifyListeners();
    }
  }
}
MyChangeNotifier类可看作是一个代理,改变数据与刷新页面都由此类完成。

步骤二
在runApp函数的根节点添加Provider(状态管理员),我直接使用MultiProvider(可以同时管理多个Provider)。

当然,你需要在状态树的 基层种添加,必须是能响整个状态树的地方。

void main() => runApp(ProviderDemoFirst());
class ProviderDemoFirst extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    // 将多个提供者合并到单个线性小部件树中的提供者。它用于提高可读性,并减少必须嵌套多层提供程序的样板代码。
    return MultiProvider(
      providers: <SingleChildCloneableWidget>[
        //用于ChangeNotifier的ListenableProvider的规范。它将ChangeNotifier.dispose在需要时自动调用。
        ChangeNotifierProvider(builder: (_) => MyChangeNotifier()),
      ],
      // 添加 观众
      child: Consumer<MyChangeNotifier>(
        builder:(context, counter, _) {
          return MaterialApp(
            home: MyHome(),
          );
        },
      ),
    );
  }
}
以上两步就已经完成了状态管理的布置。

步骤三
改变数据

//add() 是MyChangeNotifier类种的方法
Provider.of<MyChangeNotifier>(context, listen: false).add();
获取数据

//获取数据
final myChangeNotifier = Provider.of<MyChangeNotifier>(context);
//结果
myChangeNotifier.count
关于 Flutter provider状态管理框架 的简单介绍到此位置。

我为什么要写这篇文章呢,原因是网上很多介绍provider的人把事情复杂化了,说了很多很多。这样是不利于新人入手。希望可以帮到一些人...

效果图


完整代码
查看完整代码


————————————————
版权声明:本文为CSDN博主「马志武」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/ruoshui_t/article/details/102723339

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值