Представьте себе базу данных, в которой каждая таблица имеет соответствующий флаттер 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.
Какой способ лучше?