Как предоставить параметр области для Blo c? Параметризованный бл c или событие с параметрами? - PullRequest
0 голосов
/ 12 января 2020

Представьте себе базу данных, в которой каждая таблица имеет соответствующий флаттер BLO C.

Ситуация: мой BLO C зависит от некоторого параметра XXX. Аналогично запросу SELECT ... FROM ... WHERE id_category = XXX

Я мог бы сделать свой BLO C, построенный с этим параметром XXX, следующим образом.

BlocProvider<PupilBloc>(
              create: (BuildContext context) =>
                  PupilBloc(XXX)..add(LoadPupil()))

В моем коде разные PupilBloc экземпляры зависят от навигации (выбор категории XXX на предыдущей странице). Итак, я думаю, что нет никакого перекрытия между различными PupilBloc.

Я мог бы также поместить параметр в событие.

BlocProvider<PupilBloc>(
              create: (BuildContext context) =>
                  PupilBloc()..add(LoadPupil(XXX)))

Это событие будет загружать только значения с соответствующим XXX. В следующий раз событие LoadPupil() будет отправлено с другим параметром - оно будет использовать тот же PupilBloc, но получит новые данные, соответствующие параметру.

Эти два подхода мне кажутся эквивалентными. 1. Несколько разных параметризованных BLOC. 2. Одиночный BLO C выборка различных данных на основе параметра Event.

Какой способ лучше?

1 Ответ

1 голос
/ 12 января 2020

Если ваш Blo c имеет зависимость от каких-либо одинаковых экземпляров (например, хранилище или объект класса), то подход A - это путь к go, но если ваш Blo c не имеет такой зависимости и ему просто нужно другое значение для извлечения других данных, чем у вас go с подходом B. Я не совсем уверен в вашем объяснении вашего случая, но я думаю, что подход B лучше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...