我正在通过集团向服务器发送数据,并在过程中显示progressSnackBar
,然后显示successSnackBar
。有时,此过程不到一秒钟,因此完全不显示progressSnackBar
是有意义的-换句话说,等待一秒钟,然后检查状态是否仍为UpdatingAccount
。我尝试过涉及Future.delay(...)
的不同组合,但均以失败告终,我可能可以进行setState
骇客攻击,但有没有办法仅在bloc侦听器内部实现此目的?
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...
),
您可以在Future.delay()
状态下进行state is UpdatingAccount
,然后再次检查状态。
if (state is UpdatingAccount) {
Future.delayed(Duration(seconds: 1), (){
if(state is "UpdatingAccount"){
Scaffold.of(context)
..hideCurrentSnackBar()
..showSnackBar(progressSnackBar());
}
});
}