Flutter全局狀態(tài)管理機(jī)

需求:
· 在我的界面,展示了用戶(hù)信息姓名笔刹、年齡囱持、性別等信息
· 我的界面有一個(gè)設(shè)置按鈕,可以修改這些用戶(hù)信息
· 修改之后怎么刷新呢闲擦?
· 這時(shí)候就使用到全局狀態(tài)管理

dependencies:
  flutter:
    sdk: flutter

  flutter_redux: ^0.5.2  #全局狀態(tài)管理機(jī)

eg:

// 再添加其他的全局類(lèi)慢味,都在初始化store時(shí)候添加進(jìn)去
// YYRedux.dart

import 'package:ly_app/Model/UserInfo.dart'; // UserInfo類(lèi)
import 'package:ly_app/Redux/UserInfoRedux.dart'; //UserInfoRedux類(lèi)

// 需要全局的對(duì)象在YYState類(lèi)里面添加
class YYState {
  UserInfo userInfo;

  YYState({this.userInfo});
}

// 創(chuàng)建store使用
YYState appReducer(YYState state, action) {
  return YYState(
    // 將全局對(duì)象和action關(guān)聯(lián)
    userInfo: UserInfoReducer(state.userInfo, action),
  );
}
// UserInfoReducer.dart

import 'package:ly_app/Model/UserInfo.dart';
import 'package:redux/redux.dart'; // redux全局狀態(tài)管理

/// redux 的 combineReducers, 通過(guò) TypedReducer 將 UpdateUserInfoAction 與 reducers 關(guān)聯(lián)起來(lái)
final UserInfoReducer = combineReducers<UserInfo>([
  TypedReducer<UserInfo, UpdateUserInfoAction>(_updateLoaded),
]);

/// 如果有 UpdateUserAction 發(fā)起一個(gè)請(qǐng)求時(shí)
/// 就會(huì)調(diào)用到 _updateLoaded
/// _updateLoaded 這里接受一個(gè)新的userInfo,并返回
/// 更新全局對(duì)象時(shí)候調(diào)用的方法
UserInfo _updateLoaded(UserInfo userInfo, action) {
  userInfo = action.userInfo;
  return userInfo;
}

class UpdateUserInfoAction {
  final UserInfo userInfo;
  UpdateUserInfoAction(this.userInfo);
}

// main.dart

import 'package:flutter/material.dart';

import 'package:flutter/cupertino.dart';
import 'package:ly_app/MainPage.dart';

import 'package:ly_app/Model/UserInfo.dart';

import 'package:redux/redux.dart';
import 'package:flutter_redux/flutter_redux.dart';
import 'package:ly_app/Redux/YYRedux.dart';

void main() {
  runApp(
    new Rooter()
  );
}

class Rooter extends StatelessWidget {
/// 在app入口 初始化全局狀態(tài)管理對(duì)象store
/// StoreProvider 接收對(duì)象store
  final store = new Store<YYState>(appReducer, initialState: new YYState(userInfo: UserInfo.empty()));

  Rooter({Key key}) : super(key : key);

  @override
  Widget build(BuildContext context) {
    return new StoreProvider(
        store: store,
        child: new StoreBuilder<YYState>(builder: (context, store) {
            return new MainPage();
          }
        )
    );
  }
}

訪問(wèn)數(shù)據(jù)?

    StoreProvider.of(context).state.userInfo;

更新數(shù)據(jù)?

    StoreProvider.of(context).dispatch(new UpdateUserInfoAction(newUserInfo));

/// 在需要更新或者獲取全局狀態(tài)時(shí)候需要獲取到store ?

Store<YYState> _getStore() {
  if (context == null) {
    print("YYState null");
    return null;
  }
  return StoreProvider.of(context);
}

/// 點(diǎn)擊事件 更新全局狀態(tài) 1墅冷、創(chuàng)建對(duì)象 2纯路、調(diào)用更新方法?

onPressed: () {
  var map={"name":"更愛(ài)","id":2};
  UserInfo newUserInfo = UserInfo.fromJson(map);
  _getStore()?.dispatch(new UpdateUserInfoAction(newUserInfo));
}

/// 哪里需要使用全局狀態(tài),就在最外面new StoreBuilder?

@override
Widget build(BuildContext context) {
  return new StoreBuilder<YYState>(builder: (context, store) {
    return new Text(_getStore().state.userInfo.name)
  });

Flutter完整開(kāi)發(fā)實(shí)戰(zhàn)詳解
Dio網(wǎng)絡(luò)請(qǐng)求
UI界面

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末寞忿,一起剝皮案震驚了整個(gè)濱河市驰唬,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖叫编,帶你破解...
    沈念sama閱讀 217,084評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件辖佣,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡搓逾,警方通過(guò)查閱死者的電腦和手機(jī)卷谈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)霞篡,“玉大人世蔗,你說(shuō)我怎么就攤上這事±时” “怎么了污淋?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,450評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)余掖。 經(jīng)常有香客問(wèn)我寸爆,道長(zhǎng),這世上最難降的妖魔是什么浊吏? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,322評(píng)論 1 293
  • 正文 為了忘掉前任而昨,我火速辦了婚禮救氯,結(jié)果婚禮上找田,老公的妹妹穿的比我還像新娘。我一直安慰自己着憨,他們只是感情好墩衙,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,370評(píng)論 6 390
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著甲抖,像睡著了一般漆改。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上准谚,一...
    開(kāi)封第一講書(shū)人閱讀 51,274評(píng)論 1 300
  • 那天挫剑,我揣著相機(jī)與錄音,去河邊找鬼柱衔。 笑死樊破,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的唆铐。 我是一名探鬼主播哲戚,決...
    沈念sama閱讀 40,126評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼艾岂!你這毒婦竟也來(lái)了顺少?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,980評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎脆炎,沒(méi)想到半個(gè)月后梅猿,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,414評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡秒裕,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,599評(píng)論 3 334
  • 正文 我和宋清朗相戀三年粒没,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片簇爆。...
    茶點(diǎn)故事閱讀 39,773評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡癞松,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出入蛆,到底是詐尸還是另有隱情响蓉,我是刑警寧澤,帶...
    沈念sama閱讀 35,470評(píng)論 5 344
  • 正文 年R本政府宣布哨毁,位于F島的核電站枫甲,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏扼褪。R本人自食惡果不足惜想幻,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,080評(píng)論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望话浇。 院中可真熱鬧脏毯,春花似錦、人聲如沸幔崖。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,713評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)赏寇。三九已至吉嫩,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間嗅定,已是汗流浹背自娩。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,852評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留渠退,地道東北人忙迁。 一個(gè)月前我還...
    沈念sama閱讀 47,865評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像智什,于是被迫代替她去往敵國(guó)和親动漾。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,689評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,095評(píng)論 25 707
  • 用兩張圖告訴你荠锭,為什么你的 App 會(huì)卡頓? - Android - 掘金 Cover 有什么料旱眯? 從這篇文章中你...
    hw1212閱讀 12,721評(píng)論 2 59
  • 2018年3月11日 親子日記第十五篇 晚上半夜一點(diǎn)多一直到今天中午可把我折騰...
    暖洋洋的春天閱讀 200評(píng)論 0 2
  • 2017年8月20日 星期天 多云轉(zhuǎn)晴 今天, 原本約好和朋友一起帶孩子一去玩,臨時(shí)有事不能去了删豺,...
    千雨軒閱讀 151評(píng)論 0 4
  • 近幾年呀页,移動(dòng)網(wǎng)絡(luò)游戲呈現(xiàn)出爆炸式增長(zhǎng)態(tài)勢(shì)妈拌,行業(yè)洗牌的速度也同樣令人驚嘆!在生存成本與買(mǎi)方盈利需求的雙重壓力下蓬蝶,許多...
    Linda玲兒閱讀 681評(píng)論 0 1