Представьте себе базу данных, в которой каждая таблица имеет соответствующий блок флаттера.
Ситуация: мой BLOC зависит от некоторого параметра XXX. Похож на запрос SELECT ... FROM ... WHERE id_category = XXX
Я мог бы создать свой BLOC с этим параметром 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. Один блок BLOC, извлекающий разные данные в зависимости от параметра события.
Какой способ лучше?