I am creating an app in a flutter in which I need to display an alert dialog. And this is not a dismissible dialog. But when I press the back button on android it is getting dismissed. I have tried using WillPopScope widget to detect back press events. I am able to detect back button press using WillPopScope but this is not working while the dialog is open. Any suggestion and guide will be really helpful. Thanks.
Dialog creation snippet:
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),
),
],
);
});}
Back button won't close the dialog.
showDialog(
context: context,
barrierDismissible: false,
builder: (BuildContext context) {
return WillPopScope(
onWillPop: () async => false,
child: AlertDialog(
title: Text('Title'),
content: Text('This is Demo'),
actions: <Widget>[
FlatButton(
onPressed: () => Navigator.pop(context),
child: Text('Go Back'),
),
],
),
);
},
);
Three ways to stop dialog getting closed by Android Back Button
Option one:
onWillPop: () {
return Future.value(false);
},
Option Two:
onWillPop: () async {
return false;
},
Option Three:
onWillPop: () {}, // This will give surpress warning, try to avoid this one.
Because my reputation not enough to comment on the accepted answer, I want to give other alternative for onPressed: () {}
. You can use onPressed: () => null
. No warning will pop up.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With