Перехват события системной кнопки Back в Android

Егор Долгов · 22.04.2019
Статья написана для старой версии Flutter и сейчас обновляется. Часть кода может не компилироваться на актуальной версии.

Необходимо использовать виджет WillPopScope источник

Возникают ситуации когда вам нужно обойти событие поумолчанию, системной кнопки back (кнопка назад) на сматрфонах с Android. Для этого в виджете экрана используйте виджет WillPopScope

@override
Widget build(BuildContext context) {
  return WillPopScope(
    onWillPop: () async => false,
    child: Scaffold(
      appBar: AppBar(
        title: Text("data"),
        leading: IconButton(
          icon: Icon(Icons.ac_unit),
          onPressed: () => Navigator.of(context).pop(),
        ),
      ),
    ),
  );
}

@override
Widget build(BuildContext context) {
  return WillPopScope(
    onWillPop: () async {
        //Замена события
        Navigator.of(context).pop();
        return false;
    },
    child: Scaffold(
      appBar: AppBar(
        title: Text("data"),
        leading: IconButton(
          icon: Icon(Icons.ac_unit),
          onPressed: () => Navigator.of(context).pop(),
        ),
      ),
    ),
  );
}

Можно сделать переход по маршруту или выполнить свою бизнес логику перед выполнением функции Navigator.pop().