showCupertinoDialog< T> function
Displays an iOS-style dialog above the current contents of the app, with iOS-style entrance and exit animations, modal barrier color, and modal barrier behavior (the dialog is not dismissible with a tap on the barrier).
This function takes a builder
which typically builds a CupertinoDialog
or CupertinoAlertDialog widget. Content below the dialog is dimmed with a
ModalBarrier. The widget returned by the builder
does not share a
context with the location that showCupertinoDialog
is originally called
from. Use a StatefulBuilder or a custom StatefulWidget if the dialog
needs to update dynamically.
The context
argument is used to look up the Navigator for the dialog.
It is only used when the method is called. Its corresponding widget can
be safely removed from the tree before the dialog is closed.
Returns a Future that resolves to the value (if any) that was passed to Navigator.pop when the dialog was closed.
The dialog route created by this method is pushed to the root navigator.
If the application has multiple Navigator objects, it may be necessary to
call Navigator.of(context, rootNavigator: true).pop(result)
to close the
dialog rather than just Navigator.pop(context, result)
.
See also:
- CupertinoDialog, an iOS-style dialog.
- CupertinoAlertDialog, an iOS-style alert dialog.
- showDialog, which displays a Material-style dialog.
- showGeneralDialog, which allows for customization of the dialog popup.
- developer.apple.com/ios/human-interface-guidelines/views/alerts/
Implementation
Future<T> showCupertinoDialog<T>({
@required BuildContext context,
@required WidgetBuilder builder,
}) {
assert(builder != null);
return showGeneralDialog(
context: context,
barrierDismissible: false,
barrierColor: _kModalBarrierColor,
transitionDuration: const Duration(milliseconds: 300),
pageBuilder: (BuildContext context, Animation<double> animation, Animation<double> secondaryAnimation) {
return builder(context);
},
transitionBuilder: _buildCupertinoDialogTransitions,
);
}