我有一个名为 FoodCubit 的肘尺,它有两个功能:
-getAllFoods()
-getFilteredFoods(类别)
正如你所看到的,屏幕的顶部是一个 blocbuilder,返回由我的第一个函数发出的状态,该函数在 didChangeDependency() 中调用 底部是同一个 FoodCubit 的另一个 blocbuilder,我想返回第二个函数发出的状态 但顶部 blocbuilder 和底部 blocbuilder 的结果是相同的。我在提供 FoodCubit 的 Material 应用程序的父级中使用了 blocprovider。我想知道是否有一种方法可以提供同一 block 的两个实例并使用它。 有些怎么样
MultiBlocProvider(
Providers:[
//first bloc provider
BlocProvider(),
//second bloc provider
BlocProvider()
)
但是我怎样才能在 blocbuilder 中达到它呢?
我认为一种解决方法是在屏幕的顶部和底部使用两个 block 提供程序,但这不会破坏使用 block 的目的。 有什么办法解决吗? 有更好的办法吗?
最佳答案
您可以在此处尝试多种选项:
- 创建 block 的子类:
class FirstBloc extends FoodCubit {}
class SecondBloc extends FoodCubit {}
- 创建 block 的 mixins:
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:
...
关于Flutter Bloc - 有没有办法在屏幕中提供 block 的不同实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69745940/