Выбор ответа Senior Жизненный цикл обновлено

Flutter: deactivate и activate

Вопрос

Когда после deactivate у State вызывается activate, а не dispose?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Когда поддерево с GlobalKey перенесли в другое место дерева за тот же кадр. deactivate вызывается, когда элемент убран из дерева.

Варианты ответа

  1. Когда приложение возвращается из фона и экран снова становится активным
  2. Когда экран снова становится видимым после pop верхнего маршрута
  3. Когда поддерево с GlobalKey перенесли в другое место дерева за тот же кадрправильный ответ
  4. Всегда: dispose вызывается только при полном закрытии приложения

Разбор

deactivate вызывается, когда элемент убран из дерева. Если до конца кадра его вставили обратно (перенос через GlobalKey), вызывается activate, и State продолжает жить. Иначе в конце кадра dispose. Возврат из фона это AppLifecycleState, а экран под верхним маршрутом из дерева не удаляется, поэтому ни то ни другое здесь не срабатывает.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.