這是一篇個(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原地址,為大家能找到代碼提供者最新代碼使用