说道状态管理不得不说谷歌的亲自开发的两款状态管理Widget:第一个是provide,第二个是provider
这两个的区别就是一个出来的早,现在好像没整么更新了。第二个是2019才出来的目前的版本是provider: ^3.2.0。上一个停留在了provide: ^1.0.2,基本上GG了。但是有时候项目中可能用到了provide。所以现在我想说的是这两个的基本用法,或者说是两者使用的对比吧(控制多个界面的状态,项目中可能多个界面的状态管理更多。
区别:provide 不会重建,provider会重建。
把以前项目中用的Provide改为Provider后遇到个问题,build重建。
解决问题:可以选择不监听 listen: false 或者改到 initstate。有更好的办法欢迎留言,谢谢。

一、创建

1、创建一个provide,还用上次例子的counter

import 'package:flutter/material.dart';

class Counter with ChangeNotifier{
int value = ; increment(){
value++;
notifyListeners(); //变化后通知听众
} }

2、创建一个provider

import 'package:flutter/material.dart';

class Counter with ChangeNotifier {
int _count = ;
get count => _count; void increment() {
_count++;
notifyListeners(); //通知
} }

二、顶层依赖

1、provide

void main() {
//顶层依赖
var counter = Counter();
var providers = Provider();
providers
..(Provider<Counter>.value(counter));
runApp(ProviderNode(child: MyApp(), providers: providers));
}

2、provider

void main() { 

  runApp(
MultiProvider(
providers: [
ChangeNotifierProvider.value(value: Counter()),
//ChangeNotifierProvider(builder: (_) => Counter()),
],
child: MyApp(),
),
); }

三、使用

1、provide

Provide.value<Counter>(context).increment();
//掉用increment方法。。这里也可以传参数进去只需要在 Counter 里面的 increment 里面写两个接受参数的就好

2、provider

Provider.of<Counter>(context, listen: false).increment(); //这里也可以传参数

四、获取值

1、provide

return Provide<ZxxxDetailsProvide>(
builder: (context,child,val){
var goodsInfo = Provide.value<ZxxxDetailsProvide>(context).goodsInfo.data;
}
);

2、provider

return Consumer<ZxxxListProvide>(
builder: (context,model,child){
...
}
);

重要提示:在使用 provider的时候我们要注意了一定要设置listen的Bool值就是这样

await Provider.of<DetailsInfoProvide>(context, listen: false).getGoodsInfo(goodsId);

Flutter状态管理之provide和provider的使用区别的更多相关文章

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

    flutter 新状态管理方案 Provide (一)-使用     版权声明:本文为博主原创文章,基于CC4.0协议,首发于https://kikt.top ,同步发于csdn,转载必须注明出处! ...

  2. Flutter 状态管理- 使用 MobX

    文 / Paul Halliday, developer.school 创始人 众所周知,状态管理是每个软件项目都需要持续迭代更新的方向.它并不是一个「一次性」的工作, 而需要不断确保你遵循的最佳实践 ...

  3. Flutter状态管理Provider,简单上手

    在之前的文章中介绍了 Google 官方仓库下的一个状态管理 Provide.乍一看这俩玩意可能很容易就被认为是同一个东西,仔细一看,这不就差了一个字吗,有什么区别呢. 首先,你要知道的最大的一个区别 ...

  4. Flutter | 状态管理特别篇——Provide

    前言 今天偶然发现在谷歌爸爸的仓库下出现了一个叫做flutter-provide的状态管理框架,2月8日才第一次提交,非常新鲜.在简单上手之后感觉就是一个字--爽!所以今天就跟大家分享一下这个新的状态 ...

  5. Flutter 状态管理 flutter_Provide

    项目的商品类别页面将大量的出现类和类中间的状态变化,这就需要状态管理.现在Flutter的状态管理方案很多,redux.bloc.state.Provide. Scoped Model : 最早的状态 ...

  6. Flutter 状态管理之BLoC

    在正式介绍 BLoC之前, 为什么我们需要状态管理.如果你已经对此十分清楚,那么建议直接跳过这一节.如果我们的应用足够简单,Flutter 作为一个声明式框架,你或许只需要将 数据 映射成 视图 就可 ...

  7. Flutter实战视频-移动电商-24.Provide状态管理基础

    24.Provide状态管理基础 Flutter | 状态管理特别篇 —— Provide:https://juejin.im/post/5c6d4b52f265da2dc675b407?tdsour ...

  8. Flutter移动电商实战 --(24)Provide状态管理基础

    Flutter | 状态管理特别篇 —— Provide:https://juejin.im/post/5c6d4b52f265da2dc675b407?tdsourcetag=s_pcqq_aiom ...

  9. Flutter Bloc状态管理 简单上手

    我们都知道,Flutter中Widget的状态控制了UI的更新,比如最常见的StatefulWidget,通过调用setState({})方法来刷新控件.那么其他类型的控件,比如StatelessWi ...

随机推荐

  1. linux安装sox,踩过坑的方法

    参考文章 : https://blog.csdn.net/e_zhiwen/article/details/80037476 重新在源码中 执行一遍 ./configure --prefix=$HOM ...

  2. 【一起来烧脑】一步学会Vue.js系统

    Vuejs是一个构建数据驱动的web界面的库,通过api实现响应的数据绑定和组合的视图组件,Vue.js的核心是一个响应的数据绑定系统,它让数据与DOM保持同步非常简单,一旦创建了绑定,DOM 将与数 ...

  3. Matlab中矩阵的数据结构

    在Matlab中,矩阵默认的数据类型是double, 并不是integer. 而且奇怪的是,矩阵乘法默认按照浮点数类型进行, 整数矩阵相乘会报错.另外,可以用a= int16(A)这种形式实现数据类型 ...

  4. Complete the Projects

    F1. Complete the Projects (easy version) F2. Complete the Projects (hard version) 参考:Complete the Pr ...

  5. P5385 [Cnoi2019]须臾幻境(LCT+主席树,思维题)

    题目 P5385 [Cnoi2019]须臾幻境 做法 考虑一条边\((u,v)\)是否\([L,R]\)中的贡献:\([L,R]\)中第一条位于\(u,v\)链的边,则减少了一个联通块 实现:\(LC ...

  6. java代码拼写sql

    java后台    String zffwdm=map.get("zffwmc")==null?"":map.get("zffwmc"); ...

  7. python 两个字典对比

    def commir_two_dict(dictone,dicttwo): pass_num=0 fail_num=0 try: for i in dictone.keys(): if i in di ...

  8. Java利用FastJson一行代码转List<Map>为List<Bean>

    /** * 字符串 -> json对象.实体对象.Map.List.List<Map> */ // 字符串 -> json对象 JSONObject json = JSON.p ...

  9. nice -n 10 bash 和 chrt 10 bash 和 echo -17 > /proc/PID/oom_score_adj

    进程优先级起作用的方式从发明以来基本没有什么变化,无论是只有一个cpu的时代,还是多核cpu时代,都是通过控制进程占用cpu时间的长短来实现的. 就是说在同一个调度周期中,优先级高的进程占用的时间长些 ...

  10. 替换分隔符 ^p, 或者是回车

    1  Excel 里面的数据, 粘出来到notepad上,再从notepad 粘到word, 再把world里面的分隔符或者是回车符替换成 其他的 .