flutter 新状态管理方案 Provide (一)-使用

本文介绍Flutter的状态管理库Provide,它被设计为Bloc的替代方案,支持Builder和StreamBuilder模式,易于全局和局部使用。通过一个Counter的例子,详细解释了如何定义Model、创建全局Provide、界面监听、发出通知以及Stream模式的使用。Provide简化了状态管理,避免了传统Bloc中繁琐的创建和监听。最后提到,Provide作为官方推荐的库,值得开发者尝试。
摘要由CSDN通过智能技术生成

开这篇文章是因为看到这个库被托管在google的仓库下,而且说明是被设计出来替代ScopedModel的,而且更加灵活

支持Builder模式和StreamBuilder模式,全局,局部都可以

内部应该是结合InheritedWidget Notification体系实现的

传统的bloc需要在每一个Repository中创建StreamControllerStream,甚至有的文章中,一个监听的修改需要修改5处,维护起来比较麻烦

相比较而言Provide维护起来会稍微省事一些

入门级仓库地址

添加依赖

查看pub-install

dependencies:
  provide: ^1.0.1 # 这里的版本查看官方
flutter packages get
import 'package:provide/provide.dart';  

使用方法

这里以简单的Counter为例
也就是在flutter的hello world工程的基础上来修改

1. 定义一个Model

这个model需要继承ChangeNotifier


class Counter with ChangeNotifier {
   
  int _value;

  int get value => _value;

  Counter(this._value);

  void inc() {
   
    _value++;
    notifyListeners(); //父类的方法,发出通知
  }
}

2. 定义一个全局的Provide

这里虽然定义在全局,但事实上也可以定义在页面级

void main() {
   
  var providers = Providers()..provide(Provider.function((ctx) => Counter(0)));

  runApp(
    ProviderNode(
      child: MyApp(),
      providers: providers,
    ),
  );
}

ProviderNode表示的是提供者

3. 界面/监听

修改_MyHomePageState

添加一个方法,用于获取Counter实例

Counter get _counter => Provide.value<Counter>(context);

将原来的Text(_counter)修改一下

这里的Provide会在Counter发生变化的时候,触发builder回调来更新界面

Provide<Counter>(
    builder: (BuildContext context, Widget child, Co
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值