Как отключить onBackPressed () для флаттера AlertDialog - PullRequest
0 голосов
/ 26 апреля 2020

У меня есть AlertDialog(), что barrierDismissible установлено на false. Но все же, когда пользователь нажимает кнопку «Назад» на устройстве android, AlertDialog закрывается. Как я могу принудительно запретить пользователю закрывать AlertDialog ()?

Вот что я сделал до сих пор:

          return showDialog<bool>(
            context: context,
            barrierDismissible: false,
            builder: (BuildContext context) {
              return AlertDialog(
                title: Text('Title'),
                content: Text('This is the alert dialog content'),
                actions: <Widget>[
                  FlatButton(
                    child: Text('ok'),
                    onPressed: () {
                      Navigator.of(context).pop();
                      print('ok you win');
                    },
                  ),
                ],
              );
            },
          );

Ответы [ 2 ]

1 голос
/ 26 апреля 2020

Вы можете использовать WillPopScope в качестве родителя AlertDialog

  showDialog(context: context,builder: (BuildContext context)
          {
              return WillPopScope(
                onWillPop: () async =>false,
                              child: AlertDialog(
                  title: Text('Title'),
                  content: Text('Sample'),
                  actions: <Widget>[
                    FlatButton(
                      child: Text('ok'),
                      onPressed: (){
                        Navigator.of(context).pop();
                      },
                    )
                  ],
                ),
              );
1 голос
/ 26 апреля 2020

Попробуйте таким образом использовать WillPopScope() для обработки onBackPressed() события

showDialog(
                            context: context,
                            barrierDismissible: false,
                            builder: (BuildContext context) {
                              return WillPopScope(
                                onWillPop: () {return Future.value(false);},
                                child:  return AlertDialog(
                title: Text('Title'),
                content: Text('This is the alert dialog content'),
                actions: <Widget>[
                  FlatButton(
                    child: Text('ok'),
                    onPressed: () {
                      Navigator.of(context).pop();
                      print('ok you win');
                    },
                  ),
                ],
              ),
                              );
                            });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...