Flutter Bloc - 有没有办法在屏幕中提供 block 的不同实例

标签 flutter dart bloc flutter-bloc flutter-cubit

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

-getAllFoods()

-getFilteredFoods(类别)

我有一个如下所示的屏幕 HomeScreen

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

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

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

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

最佳答案

您可以在此处尝试多种选项:

  1. 创建 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/

    相关文章:

    android - Flutter Base64编码字符串不完整

    MVVM 与 Bloc 模式

    sqlite - 如何在SQFlite中插入POJO对象和列表

    flutter - 如果 BLoC 流未分配给变量,我是否需要处置它们?

    firebase - 如何模拟/创建 Firebase Usercredentials 对象以进行测试

    flutter - 如何在 Flutter 中测试使用 DateTime.now 的代码?

    flutter - 相对定位小部件

    firebase - 可调用函数结果为 {"verifications": {"app" :"MISSING" ,"auth" :"MISSING"}

    Dart:无法推断函数文字的类型,因为文字有一个 block 作为它的主体

    dart - 找不到引用的源:package:web_ui/web_ui.dart