У меня есть флаттер приложение, говорящее с базой данных Firebase Realtime. Я получаю данные асинхронно, очевидно, но мой пользовательский интерфейс позволяет пользователю переходить в другую часть приложения, что означает, что к моменту завершения запроса Widget
может быть отключен. Лучшие практики говорят об отмене асинхронной работы вместо проверки свойства mounted
, но я не могу понять, как это сделать по какой-то причине.
@override void initState() {
super.initState();
firebaseRealtimeReference.child('myData').once().then((results) {
if (mounted) {
setState(() {
_myLocalData = results;
}
}
}
/* Alternately with async/await: */
_myLocalData = firebaseRealtimeDatabaseReference.child('myData').once();
}
@override Widget build(BuildContext context) {
return new MyWidget(_myLocalData);
}
@override dispose() {
// Instead of checking mounted in the future, I should instead
// cancel the work in progress here.
super.dispose();
}