Корневой виджет маршрута приложения
@override
Widget build(BuildContext context) {
return SafeArea(
child: MyStatefulWidget(),
);
}
Во внутреннем виджете с отслеживанием состояния у меня есть текстовое поле с управлением фокусом. FocusNode удаляется в обратном вызове dispose (). И, наконец, если клавиатура открыта - весь экран перестраивается, и мой виджет с отслеживанием состояния также полностью перестраивается вместе с состоянием. Вызывается Dispose, и клавиатура исчезает из-за удаления узла фокуса.
Мой вывод - все контроллеры должны быть предоставлены из корневого виджета маршрута, потому что только корневой виджет живет все время без воссоздания. Это очень странно и неудобно - у меня не может быть самоуправляемых виджетов и я должен предоставлять все элементы управления извне? Если это правда, то как работают анимации, текстовые поля и другие виджеты? Это означает, что каждое перестроение вызывает воссоздание состояния и все анимации и т. Д. Останавливаются при перестроении? .. Или есть способ сохранить состояние между воссозданием виджета? Сохранять состояние и восстанавливать (например, Android) между перерывами?