Я хотел бы загрузить данные, но также использовать приложение все время.
Можете ли вы сказать мне, если это правильное решение?
В этом случае мы нажимаем кнопку загрузки и вызова функции blo c .dispatch (Event.download ());
В mapEventToState в событии _Download мы запрашиваем данные. Но мы не ждем ответа, потому что мы не хотим блокировать другие события, которые меняют представление.
Поэтому я создаю 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));
});
}
}