У меня вопрос о правильном размещении кода блока, так сказать. Так как bloc обозначает компонент бизнес-логики, я переместил бизнес-логику (например, методы обработки данных) внутрь класса. Итак, теперь есть 2 метода: один для получения и второй для сохранения данных. Затем у меня есть компонент, который внутри AddInitial
должен показывать загрузку, затем пожарный блок говорит: "Эй, мне нужны данные здесь". Это правильно или это антипаттерн? Код выглядит так.
BlocBuilder<AddBloc, AddState>(
buildWhen: (previous, current) {
// code is ommited
},
builder: (context, state) {
if (state is ExpensesLoaded || state is CategoryChanged) {
// code is ommited
} else if (state is ExpensesLoading) {
return getProgressSpinner();
} else if (state is AddInitial) {
// is it ok? If it's antipattern please give an advise how to do it correctly
context.bloc<AddBloc>().add(CategoryChange([category]));
return getProgressSpinner();
} else {
print('Bloc Loaded. Nothing to show inside Month Expenses...');
return Container();
}
}
Вопрос по поводу context.bloc<AddBloc>().add(CategoryChange([category]));
. Это антипаттерн? Как это сделать?
Кстати, когда это выглядит так. В следующий раз, когда я добавлю событие CategoryChange
в блок (которое даст состояние CategoryChanged
), построитель сверху по какой-то причине не отреагирует ...
Спасибо!
Я использую Flutter 1.22.3, flutter_bloc: 6.1.0