showConfirm static method
Future<bool?>
showConfirm({
- required BuildContext context,
- required String title,
- required String message,
- String? positiveButtonTitle,
- String? negativeButtonTitle,
Implementation
static Future<bool?> showConfirm({
required BuildContext context,
required String title,
required String message,
String? positiveButtonTitle,
String? negativeButtonTitle,
}) {
if (context.mounted) {
return showDialog(
context: context,
builder: (context) => AlertDialog(
title: Text(title),
content: Text(message),
actions: <Widget>[
TextButton(
onPressed: () {
Navigator.of(context).pop(false);
},
child: Text(negativeButtonTitle ?? "No"),
),
ElevatedButton(
onPressed: () {
Navigator.of(context).pop(true);
},
child: Text(positiveButtonTitle ?? "Yes"),
),
],
),
);
}
final completer = Completer<bool?>();
final entry = showOverlay(
(overlayContext, progress) {
void dismiss([bool? value]) {
if (!completer.isCompleted) {
completer.complete(value);
}
OverlaySupportEntry.of(overlayContext)?.dismiss();
}
return Stack(
children: [
Positioned.fill(
child: GestureDetector(
onTap: () => dismiss(null),
behavior: HitTestBehavior.opaque,
child: Container(color: Colors.black54),
),
),
Center(
child: Material(
color: Colors.transparent,
child: AlertDialog(
title: Text(title),
content: Text(message),
actions: <Widget>[
TextButton(
onPressed: () => dismiss(false),
child: Text(negativeButtonTitle ?? "No"),
),
ElevatedButton(
onPressed: () => dismiss(true),
child: Text(positiveButtonTitle ?? "Yes"),
),
],
),
),
),
],
);
},
duration: Duration.zero,
);
entry.dismissed.then((_) {
if (!completer.isCompleted) {
completer.complete(null);
}
});
return completer.future;
}