Flutter状态管理之provide和provider的使用区别
Widget:第一个是provide,第二个是provider。provider: ^3.2.0。上一个停留在了provide: ^1.0.2,基本上GG了。但是有时候项目中可能用到了provide。所以现在我想说的是这两个的基本用法,或者说是两者使用的对比吧(控制多个界面的状态,项目中可能多个界面的状态管理更多。一、创建
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的使用区别的更多相关文章
- (转)flutter 新状态管理方案 Provide (一)-使用
flutter 新状态管理方案 Provide (一)-使用 版权声明:本文为博主原创文章,基于CC4.0协议,首发于https://kikt.top ,同步发于csdn,转载必须注明出处! ...
- Flutter 状态管理- 使用 MobX
文 / Paul Halliday, developer.school 创始人 众所周知,状态管理是每个软件项目都需要持续迭代更新的方向.它并不是一个「一次性」的工作, 而需要不断确保你遵循的最佳实践 ...
- Flutter状态管理Provider,简单上手
在之前的文章中介绍了 Google 官方仓库下的一个状态管理 Provide.乍一看这俩玩意可能很容易就被认为是同一个东西,仔细一看,这不就差了一个字吗,有什么区别呢. 首先,你要知道的最大的一个区别 ...
- Flutter | 状态管理特别篇——Provide
前言 今天偶然发现在谷歌爸爸的仓库下出现了一个叫做flutter-provide的状态管理框架,2月8日才第一次提交,非常新鲜.在简单上手之后感觉就是一个字--爽!所以今天就跟大家分享一下这个新的状态 ...
- Flutter 状态管理 flutter_Provide
项目的商品类别页面将大量的出现类和类中间的状态变化,这就需要状态管理.现在Flutter的状态管理方案很多,redux.bloc.state.Provide. Scoped Model : 最早的状态 ...
- Flutter 状态管理之BLoC
在正式介绍 BLoC之前, 为什么我们需要状态管理.如果你已经对此十分清楚,那么建议直接跳过这一节.如果我们的应用足够简单,Flutter 作为一个声明式框架,你或许只需要将 数据 映射成 视图 就可 ...
- Flutter实战视频-移动电商-24.Provide状态管理基础
24.Provide状态管理基础 Flutter | 状态管理特别篇 —— Provide:https://juejin.im/post/5c6d4b52f265da2dc675b407?tdsour ...
- Flutter移动电商实战 --(24)Provide状态管理基础
Flutter | 状态管理特别篇 —— Provide:https://juejin.im/post/5c6d4b52f265da2dc675b407?tdsourcetag=s_pcqq_aiom ...
- Flutter Bloc状态管理 简单上手
我们都知道,Flutter中Widget的状态控制了UI的更新,比如最常见的StatefulWidget,通过调用setState({})方法来刷新控件.那么其他类型的控件,比如StatelessWi ...
随机推荐
- CSS精灵图(王者荣耀案例)
首先,我们应该知道引入精灵图的原因: 具体是因为,网页上面的每张图片都要经历一次请求才能展示给用户,小的图标频繁的请求服务器,降低页面的加载速度,为了有效地减少服务器接收和发送请求的次数,提高页面的加 ...
- cf 1051F 树+图
$des$给定一张 $n$ 个点 $m$ 条边的带权无向联通图,$q$ 次询问,每次询问 $u_i$ 到 $v_i$ 的最短路长度.$n,q <= 10^5, m - n <= 20$ $ ...
- Firefox设置谷粉搜搜为默认搜索引擎的方法
原文转自:http://www.gfsoso.org/119/ 作者: cjx 分类: 谷粉专题 发布时间: 2014-07-09 23:10 ė 668条评论 如果使用Firefox的朋友希 ...
- golang-os文件操作
golang-os文件操作 package main import ( "fmt" "os" ) //func main() { // f,err :=os.C ...
- Codeforces 1239E. Turtle 折半
原文链接www.cnblogs.com/zhouzhendong/p/CF1239E.html 前言 咕了这么久之后,我的博客复活了! 题解 结论1 存在一个最优解\(A\)数组,满足\(\foral ...
- 如何快速关联/修改Git远程仓库地址
如何快速关联/修改Git远程仓库地址?按照如下步骤即可快速实现关联/修改Git远程仓库地址: 删除本地仓库当前关联的无效远程地址,再为本地仓库添加新的远程仓库地址 git remote -v //查看 ...
- 关于C#的DataGridView设置了DataSource后Rows无值问题
前言 今天写一个导出到Excel表的东西,以前也写过,之前导出都是将界面上的DataGridView中数据导出,没有任何问题,然而今天的导出场景是在界面是点击导出按钮,直接在数据库中查询符合条件的数据 ...
- 康哲20191114-1 每周例行报告kz404
此作业的要求参见https://edu.cnblogs.com/campus/nenu/2019fall/homework/10004 本周PSP 本周进度条 本周折线图 饼状图
- element-ui表格显示html格式
<el-table-column type="String" label="内容" prop="tpl" width="58 ...
- vue 遇到防盗链 img显示不出来
在index.html中添加: <meta name="referrer" content="no-referrer">