【发布时间】:2020-05-03 09:00:21
【问题描述】:
我想下载数据,但也一直使用该应用程序。
你能告诉我这是否是正确的解决方案吗?
情况是我们按下按钮下载并调用函数 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));
});
}
}
【问题讨论】:
-
你能试着简化你的问题吗?目前很难理解您需要什么帮助。
标签: flutter bloc flutter-bloc