我想下载数据,但也一直使用该应用程序。
你能告诉我这是否是正确的解决方案吗?
案例是我们按下按钮下载并调用函数 bloc.dispatch(Event.download());
在 _Download 事件的 mapEventToState 中,我们请求数据。但是我们不等待响应,因为我们不想阻止其他正在改变视图的事件。
所以我创建了 Future 并在得到响应后调用事件 _UpdateData() 来处理下载的数据并用它们生成状态。
没关系?有 _requestTime 参数来检查它是否是最后一个请求。
class Bloc {
DateTime _requestTime;
@override
Stream<State> mapEventToState(Event event) async* {
if (event is _Download) {
yield DownloadingState();
_request();
} else if (event is _UpdateData) {
if(!event.requestTime.isBefore(_requestTime))
yield DownladedState(event.response);
}
}
_request() {
_requestTime = DateTime.now();
repository.downloadData().then((response) {
dispatch(_UpdateData(response));
});
}
}