【发布时间】:2020-03-27 07:58:51
【问题描述】:
我通过一个块向服务器发送数据,并在此期间显示progressSnackBar,然后在成功时显示successSnackBar。有时这需要不到一秒钟的时间,根本不显示progressSnackBar 是有意义的 - 换句话说等待一秒钟,然后检查状态是否仍然是UpdatingAccount强>。我已经尝试过涉及Future.delay(...) 的不同组合但失败了,我可能可以做一个setState hack,但是有没有办法在 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...
),
【问题讨论】:
-
您能否将 1 秒等待逻辑放入您的 BLOC 中?您可以生成两次 UpdatingAccount 并添加经过的时间,以便您的听众可以决定是否应该显示进度。如果该过程在 1 秒内完成,则只需省略第二个产量。还是 BLOC 内部的流量控制被认为是不好的做法?我对这种模式还有些陌生。
标签: flutter dart bloc flutter-bloc