我想下载数据,但还要一直使用该应用程序。
您能告诉我解决方案是否正确吗?
这种情况是我们按下按钮下载并调用函数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));
});
}
}
答案 0 :(得分:0)
让我知道它是否有效
_request前面的增产**
@override
Stream<State> mapEventToState(Event event) async* {
if (event is _Download) {
yield DownloadingState();
yield* _request();
} else if (event is _UpdateData) {
if(!event.requestTime.isBefore(_requestTime))
yield DownladedState(event.response);
}
}
_request() async*{
_requestTime = DateTime.now();
repository.downloadData().then((response) {
dispatch(_UpdateData(response));
});
}
}