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;
 List userInfo = [];
  // 我们也可以通过向自定义函数传递参数,来改变store中变量的值,dispatch到定义函数,再由自定义函数commit到state
  void userUuid(val) {
    uuid = val;
    // 当调用 notifyListeners() 时,它会通知所有听众进行刷新。
    notifyListeners();
  }

  void userInfos(val) {
    userInfo = val;
    notifyListeners();
  }
}