最簡單rxdart,bloc

這是一篇個(gè)人理解的文章,如果存在錯(cuò)誤請大家指正,本篇幅不介紹原理 只介紹過程(用一位博客朋友的代碼做示例)

1 rxdart和bloc要解決的問題是什么(現(xiàn)在我都不明白bloc是什么)


rxdart和bloc用來處理跳轉(zhuǎn)頁互傳數(shù)據(jù),數(shù)據(jù)透傳

2 如何透傳

很多網(wǎng)絡(luò)文章介紹了很多概念,概念原理太枯燥了,說白了,透傳的數(shù)據(jù)是通過BuildContext透傳過去的,把數(shù)據(jù)綁定在BuildContext上面,子組件會(huì)繼承BuildContext,那么子組件會(huì)得到綁定數(shù)據(jù),目標(biāo)頁通過上層頁面跳轉(zhuǎn)的時(shí)候把BuildContext帶入 那么目標(biāo)頁也自然會(huì)有上一頁的BuildContext,自然會(huì)有綁定的數(shù)據(jù)

3 如何實(shí)現(xiàn)

class BlocProvider extends InheritedWidget{

????????final CountBLoC bLoC=CountBLoC();

????????BlocProvider({Keykey,Widget child}):super(key:key, child:child);

????????@override

????????boolupdateShouldNotify(_)=>true;

????????static CountBLoC of(BuildContext context)=>

????????(context.inheritFromWidgetOfExactType(BlocProvider) as BlocProvider).bLoC;

}

這頁就是A頁具體實(shí)現(xiàn)的過程 bloc 就是我們保持?jǐn)?shù)據(jù),處理數(shù)據(jù)的對象,child就是具體的ui組件,由于ui組件默認(rèn)會(huì)繼承父組件的BuildContext,所以子組件也和bloc實(shí)現(xiàn)了綁定,二子組件在跳轉(zhuǎn)的時(shí)候使用的是這串語句

Navigator.of(context).push(MaterialPageRoute(builder: (context) => UnderPage())))

完整代碼

好,我不管這串語句具體是什么意思,但是我看到有context做參數(shù)傳遞,那我就明白了,這個(gè)時(shí)候帶有bloc?的context已經(jīng)被傳遞到第二個(gè)頁面,那現(xiàn)在的問題是如何在組件中獲取bloc,

那么如何在子頁獲取bloc呢

final bloc = BlocProvider.of(context);

獲取bloc監(jiān)聽,或者獲取句柄

stream: bloc.stream,

監(jiān)聽結(jié)果,獲取監(jiān)聽結(jié)果句柄

AsyncSnapshot<int> snapshot

使用就不過多介紹了

${snapshot.data}

這其中少了如何對數(shù)據(jù)進(jìn)行邏輯處理,那就先把bLoC代碼貼出來

其實(shí)在獲取bloc后,直接執(zhí)行即可

bloc.increment(),

而bloc.increment(),就是一段業(yè)務(wù)處理過程,這篇文章還有兩個(gè)需要注意的,1是BlocProvider父組件使用的是InheritedWidget,第二個(gè)就是bloc中的dispose方法,這個(gè)可能在做資源回收,我是不太想深究了,

好,這篇文章就到這里,這篇文章并不是講redart和bloc的具體原理和概念,就是講了一下我自己理解的數(shù)據(jù)傳遞過程,新手可能會(huì)問rxdart在哪,BehaviorSubject這個(gè)類就是rxdart具體的封裝吧,就在Bloc代碼中。想在想rxdart是什么我覺得就是一個(gè)可控的雙向綁定,

這個(gè)是我復(fù)制到自己github下的地址,這個(gè)地址不在更新

我clone代碼的原地址github原地址,為大家能找到代碼提供者最新代碼使用

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容