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<dynamic> userInfo = []; // 我們也可以通過向自定義函數傳遞參數,來改變store中變量的值,dispatch到定義函數,再由自定義函數commit到state void userUuid(val) { uuid = val; // 當調用 notifyListeners() 時,它會通知所有聽眾進行刷新。 notifyListeners(); } void userInfos(val) { userInfo = val; notifyListeners(); } }