如何在bloc Consumer中制作两个不同的肘节和状态?

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

我有两个肘节和状态=> DeviceBloc、DeviceScreen 和StatisticsCubit、StatisticsState。

我想在一个页面中使用所有这些(块消费者)。我该怎么做?

这是我的代码,我想在BlocCinsumer中添加StatisticsCubit、StatisticsState

return BlocConsumer<DeviceScreenBloc, DeviceScreenState>(
        listener: (context, state) async {}
       );
flutter dart bloc
2个回答
3
投票

您可以将

BlocConsumer
包裹在另一个
BlocConsumer
中,如下所示:

    BlocConsumer<DeviceScreenBloc, DeviceScreenState>(
      listener: (context, deviceScreenState) {},
      builder: (context, deviceScreenState) {
        return BlocConsumer<StatisticsCubit, StatisticsState>(
          listener: (context, statisticsState) {},
          builder: (context, statisticsState) {
            ...
          },
        );
      },
    );

1
投票

只需嵌套 bloc 构建器方法并创建正确的实现即可。

    class HomeScreen extends StatelessWidget {
       @override
       Widget build(BuildContext context) {
          return Scaffold(
             appBar: _buildAppbar(context),
             body: BlocConsumer<TasksCubit, TasksStates>(
                listener: (context, state) {},
                builder: (context, state) {
                   return BlocConsumer<TasksOperationsCubit, TasksOperationsStates>(
                     listener: (operationsContext, operationsState) {
                       if (operationsState is InsertIntoDatabaseSuccessState ||
                  operationsState is DeleteTaskItemSuccessState ||
                  operationsState is UpdateTaskItemSuccessState) {
                TasksCubit.get(context).getAllTasks();
              }
            },
            builder: (operationsContext, operationsState) {
                return _buildTasks(state.tasks);
            },
          );
        },
      ),
    );
  }
© www.soinside.com 2019 - 2024. All rights reserved.