Как переписать это, чтобы избежать предупреждения Don't use 'BuildContext's across async gaps.
.
onPressed: () async {
if (snapshot.hasData) {
final isRapportExist = await bloc.isRapportExist();
if (isRapportExist) {
return;
}
bloc.submitRapport();
Navigator.pop(context, true); //Don't use 'BuildContext's across async gaps.
}
},
В таких случаях обычно используется mounted
имущество, но откуда оно берется?
if (!mounted) return; //Undefined name 'mounted'.
Navigator.pop(context, true);
Mounted находится в состоянии, или, если вы находитесь в более новом флаттере, также в BuildContext.
Это свойство класса State, которое расширяет ваше состояние.
Вы можете получить к нему доступ из контекста (BuildContext
).
if (!context.mounted) return;
эта строка также выдает это предупреждение
ну как то странно if (context.mounted){Navigator....}
я думаю context.mounted появился на v3.7
Это произошло, когда я ссылался на контекст вне класса виджета, когда я передал контекст в качестве параметра. Теперь context.mounted доступен даже в виджете без сохранения состояния.
Отвечает ли это на ваш вопрос? как решить ошибку BuildContexts через асинхронные промежутки