0

我有一个名为 FoodCubit 的腕尺,它有两个功能:

-getAllFoods()

-getFilteredFoods(类别)

我有一个像下面这样的屏幕 主屏幕

如您所见,屏幕的顶部是返回由我的第一个函数发出的状态的 blocbuilder,它在 didChangeDependency() 中调用,而底部是同一个 FoodCubit 的另一个 blocbuilder,我想返回第二个函数发出的状态但是结果在顶部 blocbuilder 和底部 blocbuilder 中是相同的。我在提供 FoodCubit 的材料应用程序的父级中使用了 blocprovider。如果有一种方法可以提供相同 bloc 的两个实例并使用它,我正在徘徊。有些怎么样

MultiBlocProvider(
Providers:[
//first bloc provider
BlocProvider(), 
//second bloc provider
BlocProvider() 
)

但是,我怎样才能在 blocbuilder 中达到它?

我认为一种解决方法是在屏幕的顶部和底部使用两个 blocprovider,但这不会破坏使用 bloc 的目的。有什么办法吗?有没有更好的办法?

4

2 回答 2

1

您可以在这里尝试几个选项:

  1. 创建 bloc 的子类:
class FirstBloc extends FoodCubit {}
class SecondBloc extends FoodCubit {}
  1. 创建 bloc 的 mixin:
mixin FirstBloc on Bloc {}

mixin SecondBloc on Bloc {}

class FoodCubit extends Bloc with FirstBloc, SecondBloc {
  getAllFoods()

  getFilteredFoods(category)
}
// Then in your widget
... 
BlocProvider<FirstBloc>(
     create: (_) => FoodCubit(),
     child:
...
BlocProvider<SecondBloc>(
     create: (_) => FoodCubit(),
     child:
...
于 2021-10-28T02:12:13.283 回答
0

您可以为这两个事件发出相同的状态,即具有“全部”列表“过滤”列表。

您也不需要两个 BlocBuilders,它可能只是一个。

于 2021-10-28T05:24:02.603 回答