web-dev-qa-db-ja.com

フラッターでダイアログが開いているときに戻るボタンの押下を検出する

警告ダイアログを表示する必要があるアプリをフラッターで作成しています。そして、これは却下可能な対話ではありません。しかし、Android=で戻るボタンを押すと、表示されなくなります。WillPopScopeウィジェットを使用して、バックプレスイベントを検出しようとしました。WillPopScopeを使用してバックボタンの押し下げを検出できますが、ダイアログが開いています。提案やガイドは本当に役に立ちます。ありがとうございます。

ダイアログ作成スニペット:

void buildMaterialDialog(
  String dialogTitle,
  String dialogContent,
  String negativeBtnText,
  String positiveBtnText,
  String positiveTextUri) {

showDialog(
    context: context,
    barrierDismissible: false,
    builder: (BuildContext context) {
      return new AlertDialog(
        title: new Text(dialogTitle),
        content: new Text(dialogContent),
        actions: <Widget>[
          new FlatButton(
            onPressed: () {
              //Function called
              _updateDialogNegBtnClicked(isCancelable);
            },
            child: new Text(negativeBtnText),
          ),
          new FlatButton(
            onPressed: () => launch(positiveTextUri),
            child: new Text(positiveBtnText),
          ),
        ],
      );
    });}
16
Gaurav

戻るボタンはダイアログを閉じません。

showDialog(
                            context: context,
                            barrierDismissible: false,
                            builder: (BuildContext context) {
                              return WillPopScope(
                                onWillPop: () {},
                                child: new AlertDialog(
                                  title: new Text('Title'),
                                  content: new Text('This is Demo'),
                                  actions: <Widget>[
                                    new FlatButton(
                                      onPressed: () {
                                        //Function called
                                      },
                                      child: new Text('Ok Done!'),
                                    ),
                                    new FlatButton(
                                      onPressed: () {
                                        Navigator.pop(context);
                                      },
                                      child: new Text('Go Back'),
                                    ),
                                  ],
                                ),
                              );
                            });
22
anmol.majhail