Пожалуйста, посмотрите на мой код:
class HomePageState extends State<HomePage> {
bool _isLoading = false;
.....
@override
Widget build(BuildContext context) {
var drawerOptions = <Widget>[];
......
drawerOptions.add(new ListTile(
leading: new Icon(Icons.account_balance),
title: new Text(Strings.menu_change_city),
onTap: () => createDialog()
));
if(_isLoading) return buildBusyForm();
return Scaffold( .... //window content
}
}
Итак, у меня есть навигационный ящик.Один элемент («Выбрать город») не закрывает блок навигации, он отображает диалоговое окно выбора города:
createDialog() {
setState(() {_isLoading = true;});
fetchCities().then((response) {
setState(() {_isLoading = false;});
showDialog(
context: context,
builder: (context) => CityChoiceDialog<City>(
title: Text(Strings.menu_change_city),
items: response,
initialValue: response.firstWhere((c) => c.id == globals.cityId, orElse: () => new City()),
itemBuilder: (City city) => Text(city.name),
onSelected: _onSelected,
onSubmitted: _onSubmitted));
});
}
Таким образом, в основном он предназначен для отображения формы занятости, загрузки городов, а затем скрытия формы занятости и отображения списка городов.диалог.Похоже, что работает, я получаю исключение:
I / flutter (10662): ══╡ ИСКЛЮЧЕНИЕ ВЫДЕЛЕНО БИБЛИОТЕКОЙ ВИДЖЕТОВ ╞═══════════════════════════════════════════════════════════ I / трепетание (10662): при финализации дерева виджета было выдано следующее утверждение: I / flutter (10662): setState () или markNeedsBuild () вызывается, когда дерево виджетов было заблокировано.I / flutter (10662): Этот виджет _ModalScope не может быть помечен как нуждающийся в сборке, поскольку среда I / flutter (10662) заблокирована.I / flutter (10662): виджет, для которого были вызваны setState () или markNeedsBuild (), был: I / flutter (10662):
_ModalScope- [LabeledGlobalKey <_ModalScopeState> # 1f222] (состояние: I / flutter (10662)): _ModalScopeState # 6c40b)
Как правильно делать то, что я хочу?