Я отправляю данные на сервер через блок и показываю progressSnackBar
во время, а затем successSnackBar
в случае успеха. Иногда это занимает меньше секунды, и имеет смысл вообще не отображать progressSnackBar
- другими словами, подождите секунду, а затем проверьте, остается ли состояние UpdatingAccount
. Я пробовал и потерпел неудачу с различными комбинациями, включающими Future.delay(...)
, и я, вероятно, смогу взломать setState
, но есть ли способ добиться этого только внутри слушателя блока?
BlocListener<AccountBloc, AccountState>(
listener: (BuildContext context, state) {
if (state is UpdatingAccount) { // <-- delay this
Scaffold.of(context)
..hideCurrentSnackBar()
..showSnackBar(progressSnackBar());
} else if (state is AccountUpdated) {
Scaffold.of(context)
..hideCurrentSnackBar()
..showSnackBar(successSnackBar());
}
},
// rest...
),