Как справиться с нажатием кнопки НАЗАД на устройстве Android во флаттере? - PullRequest
0 голосов
/ 16 февраля 2019

Как я могу обработать кнопку возврата устройства onPressed() во Flutter для Android?Я знаю, что я должен поставить кнопку назад вручную для iOS, но на устройстве Android есть встроенная кнопка BACK, и пользователь может нажать ее.Как справиться с этим?

1 Ответ

0 голосов
/ 16 февраля 2019

Вы можете использовать WillPopScope для достижения этой цели.

Сначала оберните Scaffold внутрь WillPopScope.Я показываю диалоговое окно на первой странице, чтобы запросить подтверждение выхода из приложения.Вы можете изменить это в соответствии со своими потребностями.

Пример:

@override
  Widget build(BuildContext context) {
    return new WillPopScope(
      child: Scaffold(
          backgroundColor: Color.fromRGBO(255, 255, 255, 20.0),
          resizeToAvoidBottomPadding: true,
          appBar: AppBar(
              elevation: 4.0,
              title:
                  Text('Dashbaord', style: Theme.of(context).textTheme.title),
              leading: new IconButton(
                icon: new Icon(Icons.arrow_back, color: Colors.white),
                onPressed: () => _onWillPop(),
              )),
          body: new Container(), // your body content
      onWillPop: _onWillPop,
    );
  }

 // this is the future function called to show dialog for confirm exit.
 Future<bool> _onWillPop() {
    return showDialog(
          context: context,
          builder: (context) => new AlertDialog(
                title: new Text('Confirm Exit?',
                    style: new TextStyle(color: Colors.black, fontSize: 20.0)),
                content: new Text(
                    'Are you sure you want to exit the app? Tap \'Yes\' to exit \'No\' to cancel.'),
                actions: <Widget>[
                  new FlatButton(
                    onPressed: () {
                      // this line exits the app.
                      SystemChannels.platform
                            .invokeMethod('SystemNavigator.pop');
                    },
                    child:
                        new Text('Yes', style: new TextStyle(fontSize: 18.0)),
                  ),
                  new FlatButton(
                    onPressed: () => Navigator.pop(context), // this line dismisses the dialog
                    child: new Text('No', style: new TextStyle(fontSize: 18.0)),
                  )
                ],
              ),
        ) ??
        false;
  }
}

В приведенном выше примере я вызываю эту функцию _onWillPop(), когда пользователь нажимает кнопку BACK икнопка возврата в AppBar.

Вы можете использовать этот WillPopScope для нажатия кнопки BACK и выполнения желаемого действия.

...