Выбор ответа Senior Жизненный цикл обновлено
Flutter: deactivate и activate
Вопрос
Когда после deactivate у State вызывается activate, а не dispose?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Когда поддерево с GlobalKey перенесли в другое место дерева за тот же кадр. deactivate вызывается, когда элемент убран из дерева.
Варианты ответа
- Когда приложение возвращается из фона и экран снова становится активным
- Когда экран снова становится видимым после
popверхнего маршрута - Когда поддерево с
GlobalKeyперенесли в другое место дерева за тот же кадрправильный ответ - Всегда:
disposeвызывается только при полном закрытии приложения
Разбор
deactivate вызывается, когда элемент убран из дерева. Если до конца кадра его вставили обратно (перенос через GlobalKey), вызывается activate, и State продолжает жить. Иначе в конце кадра dispose. Возврат из фона это AppLifecycleState, а экран под верхним маршрутом из дерева не удаляется, поэтому ни то ни другое здесь не срабатывает.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.