#flutter #bloc #flutter-bloc
Вопрос:
Я хочу разделить свой БЛОК на два блока:
- тот, кто выполняет подготовительную работу
- главный из них
Давайте назовем это PrepBloc и MainBloc. Разумный ли это способ поместить одно в другое вот так:
BlocProvider<PrepBloc>(
create: ......,
child: AppView()
)
class AppView extends StatelessWidget {
Widget build(BuildContext context) {
return BlocBuilder<PrepBloc, PrepState>(
builder: (context, state) {
if (state is ReadyState) {
return BlocProvider<MainBloc>(...);
}
else if (state is NotReadyState) {
return PrepPage();
}
}
);
}
}
Я знаю, что есть многоблочная вещь, но она кажется мне немного сложной и создает много кода.
Ответ №1:
Это абсолютно правильный способ сделать это!
Вы бы использовали мультиблоковый провайдер, если детям нужен доступ к обоим блокам, но в вашем случае это не то, что вам нужно. Я думаю, что для подготовки нет смысла иметь доступ к MainBloc.
Комментарии:
1. Спасибо тебе, Роберт! (Подготовка/блок-это всего лишь некоторые сведения о входе в систему и т. Д.)
2. Здорово. Вы можете увидеть, как это имеет смысл, если бы вы для состояния готовности вернули виджет, который вы, возможно, определили в отдельном файле. Если вы в этом виджете начнете с BlocProvider, то он не будет выглядеть как своеобразные вложенные блоки. Вы также можете рассматривать их как StatefulWidget, и те, которые вы размещаете без каких-либо вопросов, Принимают ответ, если вы удовлетворены ответом.
3. Это отличный исчерпывающий ответ. Я новичок на сайте и не заметил этой кнопки о принятии.