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是一個Flutter小部件,它通過RepositoryProvider.of為其子節點提供知識庫。它用作依賴注入小部件,以便可以向子樹中的多個窗口小部件提供知識庫的單個實例。BlocProvider應該用於提供bloc,而RepositoryProvider應該只用於提供知識庫。
RepositoryProvider(
builder: (context) => RepositoryA(),
child: ChildA(), );
也可以通過以下代碼在ChildA中取回Repository實例:
RepositoryProvider.of<RepositoryA>(context)
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(),
)