BlocProvider.value与BlocProvider(create :)

时间:2020-10-22 10:39:35

标签: flutter flutter-bloc

我正在使用flutter_bloc,我想知道应该使用哪种方法,这两种方法之间的区别是什么?:我读到第一个带有(值)块的方法不会自动关闭,但实际上我不这样做不明白这是什么意思吗?

BlocProvider<LoginBloc>.value(
  value:  (LoginBloc(LoginInitialState(), AuthRepository())),
  ),

  

 BlocProvider<ProfileBloc>(
         create:  (context) => ProfileBloc(ProfileInitialState(), AuthRepository()),
       ),

2 个答案:

答案 0 :(得分:0)

据我了解,您将使用:

BlocProvider.value(
  value: BlocProvider.of<BlocA>(context),
  child: ScreenA(),
);

如果您已经在其他bloc中创建了BlocProvider,而您只是想让同一集团在小部件树中的其他位置可用

我假设由于此bloc不是由您当前使用的BlocProvider创建的(与BlocProvider.value一起使用),因此它无法处理{ }-将由原始bloc完成。

因此,除非要使用的BlocProvider不在其他地方存在,否则您可以仅将常规方法与bloc一起使用。

答案 1 :(得分:0)

在我们的例子中,如果我们创建一个全新的肘来传递给孩子,我们将使用:

BlocProvider<NameOfCubit>(
  ...
  child: Screen(),
)

如果我们想使用我们已经创建的肘,那么我们将通过它:

BlocProvider<NameOfCubit>.value(
  ...
  child: Screen(),
)