我们已经在使用 BLOC Provider 进行依赖注入,那么在 Bloc 实现中需要什么 get_it ?
我目前正在使用 bloc 提供程序进行依赖注入,get_it 包如何比 Bloc 提供程序有用?需要澄清
get_it
将很有用。
也许您的问题是使用
get_it
(如 registerFactory<FooBloc>()
)创建一个块。如果您的问题是这样的:get_it
将帮助您根据之前注册的依赖项创建一个块实例,如果在很多地方都提供了该块,它将帮助您不必编写大量代码。最后,您仍然必须使用 BlocProvider
来提供小部件树中的块。您必须使用 BlocProvider
,因为 Bloc 将存在于 widget 生命周期及其上下文中,因此可以轻松通过 Widget 管理 Bloc 的初始化或关闭。
如果使用
get_it
:
BlocProvider(
create: () => getIt<FooBloc>()
)
如果不使用
get_it
BlocProvider(
create: () => FooBloc(),
child: FooWidget()
)
如果您的
FooBloc
有依赖性:
使用
get_it
时,先注册Bloc:
registerFactory<FooBloc>(
() => FooBloc(
depA: injector(),
depB: injector(),
depC: injector(),
),
并通过
BlocProvider
和其他您想要提供的地方提供:
BlocProvider(
create: () => getIt<FooBloc>(),
child: FooWidget()
)
如果您不使用
get_it
:
BlocProvider(
create: () => FooBloc(
depA: injector(),
depB: injector(),
depC: injector(),
),
child: FooWidget()
)
如果您想提供给其他地方,您也需要这样做。
希望我的解释能够解决您的问题。快乐编码<3