使用 Flutter bloc 获取它

问题描述 投票:0回答:1

我们已经在使用 BLOC Provider 进行依赖注入,那么在 Bloc 实现中需要什么 get_it ?

我目前正在使用 bloc 提供程序进行依赖注入,get_it 包如何比 Bloc 提供程序有用?需要澄清

flutter dart bloc provider get-it
1个回答
0
投票
当您使用它来注册存储库、数据库、API 客户端实例、用例时,

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

© www.soinside.com 2019 - 2024. All rights reserved.