iT邦幫忙

2021 iThome 鐵人賽

DAY 28
0
Modern Web

30天學網頁設計系列 第 28

Day28 Flutter—BLoC介紹(二)

MultiBlocListener

MultiBlocListener是一個Flutter小部件,它將多個BlocListener小部件合併為一個小部件。 MultiBlocListener提高了可讀性並消除了嵌套多個BlocListeners的要求。通過使用MultiBlocListener可以從:

BlocListener<BlocA, BlocAState>( 
listener: (context, state) {}, 
child: BlocListener<BlocB, BlocBState>( 
listener: (context, state) {}, 
child: BlocListener<BlocC, BlocCState>( 
listener: (context, state) {}, 
child: ChildA(), 
), 
), 
)

變化為:

MultiBlocListener( 
listeners: [ 
BlocListener<BlocA, BlocAState>( 
listener: (context, state) {}, 
), 
BlocListener<BlocB, BlocBState>( 
listener: (context, state) {}, 
), 
BlocListener<BlocC, BlocCState>( 
listener: (context, state) {}, 
), 
], 
child: ChildA(), 
)

RepositoryProvider

RepositoryProvider是一個Flutter小部件,它通過RepositoryProvider.of為其子節點提供知識庫。它用作依賴注入小部件,以便可以向子樹中的多個窗口小部件提供知識庫的單個實例。BlocProvider應該用於提供bloc,而RepositoryProvider應該只用於提供知識庫。

RepositoryProvider( 
builder: (context) => RepositoryA(), 
child: ChildA(), );

也可以通過以下代碼在ChildA中取回Repository實例:

RepositoryProvider.of<RepositoryA>(context)

MultiRepositoryProvider

MultiRepositoryProvider是一個Flutter小部件,可將多個RepositoryProvider小部件合併為一個小部件。MultiRepositoryProvider提高了可讀性並消除了嵌套多個RepositoryProvider的要求。通過使用MultiRepositoryProvider可以從:

RepositoryProvider<RepositoryA>( 
builder: (context) => RepositoryA(), 
child: RepositoryProvider<RepositoryB>( 
builder: (context) => RepositoryB(), 
child: RepositoryProvider<RepositoryC>( 
builder: (context) => RepositoryC(), 
child: ChildA(), 
) 
) 
)

變化為:

MultiRepositoryProvider( 
providers: [ 
RepositoryProvider<RepositoryA>( 
builder: (context) => RepositoryA(), 
), 
RepositoryProvider<RepositoryB>( 
builder: (context) => RepositoryB(), 
), 
RepositoryProvider<RepositoryC>( 
builder: (context) => RepositoryC(), 
), 
], 
child: ChildA(), 
)

上一篇
Day27 Flutter—BLoC介紹
下一篇
Day29 DOM 介紹
系列文
30天學網頁設計30

1 則留言

0
juck30808
iT邦新手 2 級 ‧ 2021-10-12 18:32:34

恭喜即將完賽!!!

我要留言

立即登入留言