我有两个肘节和状态=> DeviceBloc、DeviceScreen 和StatisticsCubit、StatisticsState。
我想在一个页面中使用所有这些(块消费者)。我该怎么做?
这是我的代码,我想在BlocCinsumer中添加StatisticsCubit、StatisticsState
return BlocConsumer<DeviceScreenBloc, DeviceScreenState>(
listener: (context, state) async {}
);
您可以将
BlocConsumer
包裹在另一个 BlocConsumer
中,如下所示:
BlocConsumer<DeviceScreenBloc, DeviceScreenState>(
listener: (context, deviceScreenState) {},
builder: (context, deviceScreenState) {
return BlocConsumer<StatisticsCubit, StatisticsState>(
listener: (context, statisticsState) {},
builder: (context, statisticsState) {
...
},
);
},
);
只需嵌套 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);
},
);
},
),
);
}