flutter踩坑日记之全局状态管理
flutter的全局状态管理,这篇文章写的足够详细:
flutter全局状态管理
其实关键还是在于如何存储数据,以及怎样去拿到存储的数据;
由于用惯了vuex,所以我将以store来命名我们的Provider
在Store中创建store.dart
结构如下:
import 'package:flutter/material.dart'; import 'package:flutter/foundation.dart'; // 这里的 Model 实际上就是我们的状态,它不仅储存了我们的数据模型,而且还包含了更改数据的方法,并暴露出它想要暴露出的数据。 // 这里使用了 mixin 混入了ChangeNotifier,这个类能够帮助我们自动管理所有听众。 class GlobalStateManagementModel with ChangeNotifier { // 定义初始变量 String uuid = ''; // 使用get value => variable 这种方式,可以在任意Widget中直接通过`Store.value`的方式来获取值 String get uuidValue => uuid; ListuserInfo = []; // 我们也可以通过向自定义函数传递参数,来改变store中变量的值,dispatch到定义函数,再由自定义函数commit到state void userUuid(val) { uuid = val; // 当调用 notifyListeners() 时,它会通知所有听众进行刷新。 notifyListeners(); } void userInfos(val) { userInfo = val; notifyListeners(); } }