Два последовательных блока в flutter_bloc

#flutter #bloc #flutter-bloc

Вопрос:

Я хочу разделить свой БЛОК на два блока:

  1. тот, кто выполняет подготовительную работу
  2. главный из них

Давайте назовем это 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. Это отличный исчерпывающий ответ. Я новичок на сайте и не заметил этой кнопки о принятии.