Flutter高级第5篇:官方推荐的状态管理库 provider 的使用
一丶 状态管理
通俗的讲:当我们想在多个页面(组件/Widget)之间共享状态(数据),或者一个页面(组
件/Widget)中的多个子组件之间共享状态(数据),这个时候我们就可以用 Flutter 中的状
态管理来管理统一的状态(数据),实现不同组件直接的传值和数据共享。
现在 Flutter 的状态管理方案很多,redux、bloc、state、provide、provider。
目前我们推荐使用 provider,这个是官方提供的状态管理解决方案。相比其他状态管理库使
用起来比较方便。
二、 关于 于flutter provider 库和 和 flutter provide 库
provider 是 Flutter 团队推出的状态管理模式。
官方地址为: https://pub.dev/packages/provider
注意:p rovider 和 provide 是两个库哦。Flutter 官方推荐使用的是 provider 哦,provider 是
flutter 官方出的。provide 不是 Flutter 官方写的哦
三丶 flutter provider 的使用
1、配置依赖 provider: ^3.0.0+1
2、新建一个文件夹叫 provider,在 provider 文件夹里面放我们对于的状态管理类
3、在 provider 里面新建 Counter.dart
4、Counter.dart 里面新建一个类继承 minxins 的 ChangeNotifier 代码如下
import 'package:flutter/material.dart';
class Counter with ChangeNotifier {int _count = 0;int get count => _count;void increment() {_count++;notifyListeners();}
}
5、找到 main.dart 修改代码如下
import 'package:flutter/material.dart';
import 'routers/router.dart';
import 'package:provider/provider.dart';
import 'provider/Counter.dart';
void main() =>runApp(MyApp());
// void main() => runApp(MyApp());
class MyApp extends StatefulWidget {MyApp({Key key}) : super(key: key);_MyAppState createState() => _MyAppState();
}class _MyAppState extends State<MyApp> {@overrideWidget build(BuildContext context) {return MultiProvider(providers: [
// Provider<Counter>.value(value: foo),ChangeNotifierProvider(builder: (_) => Counter()),],child: MaterialApp(
// home: Tabs(),debugShowCheckedModeBanner: false,initialRoute: '/productContent',onGenerateRoute: onGenerateRoute,theme: ThemeData(
// primaryColor: Colors.yellowprimaryColor: Colors.white),),);}
}
6、获取值、以及设置值
import 'package:provider/provider.dart';
import '../../provider/Counter.dart';
Widget build(BuildContext context) {final counter = Provider.of<Counter>(context);
// counter.init();return Scaffold(floatingActionButton: FloatingActionButton(child: Icon(Icons.add),onPressed: (){counter.increment();},),body: Text("counter 的值:${counter.count}"));
}
Flutter高级第5篇:官方推荐的状态管理库 provider 的使用相关推荐
- Flutter实战5 -- 天气查询APP重构之状态管理(ScopedModel)
0x00 前言 前面四篇文章: Flutter实战1 --- 写一个天气查询的APP Flutter实战2 --- 写一个天气查询的APP FFlutter实战3 --- PC上运行Flutter A ...
- 【转】Asp.net控件开发学习笔记整理篇 - Asp.net客户端状态管理
最近一直在做MVC项目,对于WEBFORM 好像快忘记了.周末无聊,顺带看看他人的笔记.再次温习下. 复习大纲: 导航.页面生命周期及其它导论 一.服务器控件生命周期 二.控件开发基础 三.Asp.n ...
- Flutter项目该如何选择状态管理?
状态管理原则 我们在开发过程中,为了提高项目的可维护度和性能,也为了让页面UI跟数据(本地或服务端数据)有效分离的同时又能有效同步,都会让项目保持清晰的目录结构.同时启用状态管理库. 而MVVM模式已 ...
- Flutter 状态管理指南之 Provider
2019 Google I/O 大会,Flutter 团队在"Pragmatic State Management in Flutter "演讲上正式介绍了 Provider.自此 ...
- Flutter 状态管理
目录 一.状态管理简介 1.1 为什么需要状态管理 1.1.1 Flutter与adr/ios UI框架区别 1.1.2 状态管理框架使用场景 1.2 需要解决的问题 二.状态管理框架现有方案调研 2 ...
- Flutter Riverpod 全面深入解析,为什么官方推荐它?
随着 Flutter 的发展,这些年 Flutter 上的状态管理框架如"雨后春笋"般层出不穷,而近一年以来最受官方推荐的状态管理框架无疑就是 Riverpod ,甚至已经超过了 ...
- FLutter 官方推荐的二个动画插件lottie和Rive(flare)动画
FLutter 官方推荐的二个动画插件lottie和rive(flare)动画 lottie 动画:Lottie是一个Android和iOS的移动库,它解析Adobe After Effects动画, ...
- Android ActionBar完全解析,使用官方推荐的最佳导航栏(下) .
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/25466665 本篇文章主要内容来自于Android Doc,我翻译之后又做了些加工 ...
- 关于python的一些好的书籍推荐-python官方推荐30本面向初学者的书籍!你看过几本?...
现在大多数初学者学习python都是看教学视频,但是小编想说的是,如果你能把一本书籍认认真真的读完,那么比你看教学视频的效果要好的多!今天小编就来带大家看看python官方推荐的30本面向初学者的书籍 ...
- 学python买什么书好-python官方推荐30本面向初学者的书籍!你看过几本?
现在大多数初学者学习python都是看教学视频,但是小编想说的是,如果你能把一本书籍认认真真的读完,那么比你看教学视频的效果要好的多!今天小编就来带大家看看python官方推荐的30本面向初学者的书籍 ...
最新文章
- 都说 HashMap 是线程不安全的,到底体现在哪儿?
- [ARM异常]-ARM Core中与中断相关的寄存器
- Java黑皮书课后题第8章:*8.15(几何:在一条直线上吗)编程练习题6.39给出了一个方法,用于测试三个点是否在一条直线上。编写下面的方法,检测points数组中所有的点是否都在同一条直线上
- 安卓APP_ 控件(10)—— ListView可上下滑动的列表(重要)与ViewHolder优化
- java解析xml实例——获取天气信息
- SpringCloud集成Security安全(Config配置中心)
- 无缓冲channel与容量为1的channel的区别
- Intellij IDEA设置显示行号
- 使用EL表达式,显示Action中的数据
- dpkg和apt-get命令的用法
- 深度装机大师一键重装_deep深度装机大师一键安装Win10 64位旗舰版
- python化学公式配平_PYTHON趣用—配平化学方程式-阿里云开发者社区
- 什么是VBA,他有什么作用
- 微信企业号开发:企业支付成功后关闭交易页面问题
- 6.20thingworx之bug记录
- python 文本分析
- 游戏时弹出内存不能为read的提示框
- 影版《宫》曝海报 周冬雨:想与张艺谋再合作
- 【力扣周赛#324】6266. 使用质因数之和替换后可以取到的最小值+6267. 添加边使所有节点度数都为偶数+6268. 查询树中环的长度
- Serializers