Flutter: перехват кнопки «назад»
Вопрос
Чем сейчас заменён WillPopScope для подтверждения выхода с экрана с несохранёнными изменениями?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Варианты ответа
PopScopeсcanPop: false, а диалог показывают в колбэкеonPopInvokedWithResultправильный ответBackButtonListenerвmain, который перехватывает кнопку «назад» для всего приложенияWillPopScope, он по-прежнему рекомендуемый способ и работает с жестом «назад»Navigator.preventPop()вinitStateэкрана, пока есть несохранённые изменения
Разбор
WillPopScope устарел: его асинхронная модель несовместима с предиктивным жестом «назад» Android 14+, где система должна заранее знать, можно ли уйти. PopScope объявляет это заранее через canPop, а колбэк сообщает о попытке ухода и результате. BackButtonListener существует, но решает другую задачу (вложенные роутеры), а Navigator.preventPop не существует.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Предыдущий вопрос
Flutter: что передавать в маршрут
Следующий вопрос
Flutter: вернуть результат с экрана