dialog<T> static method
Show a dialog
Implementation
static Future<T?> dialog<T>(
Widget widget, {
bool barrierDismissible = true,
Color? barrierColor,
bool useSafeArea = true,
Object? arguments,
Duration? transitionDuration,
Curve? transitionCurve,
String? name,
}) async {
assert(debugCheckHasMaterialLocalizations(navigator!.context));
final theme = Theme.of(navigator!.context);
return navigator?.push<T>(
FlowsDialogRoute<T>(
pageBuilder: (buildContext, animation, secondaryAnimation) {
final pageChild = widget;
Widget dialog = Builder(builder: (context) {
return Theme(data: theme, child: pageChild);
});
if (useSafeArea) {
dialog = SafeArea(child: dialog);
}
// Center the dialog with max width constraint
return Center(
child: ConstrainedBox(
constraints: const BoxConstraints(maxWidth: 400),
child: dialog,
),
);
},
barrierDismissible: barrierDismissible,
barrierLabel: MaterialLocalizations.of(navigator!.context).modalBarrierDismissLabel,
barrierColor: barrierColor ?? Colors.black54,
transitionDuration: transitionDuration ?? const Duration(milliseconds: 200),
transitionBuilder: (context, animation, secondaryAnimation, child) {
return FadeTransition(
opacity: CurvedAnimation(
parent: animation,
curve: transitionCurve ?? Curves.easeOut,
),
child: child,
);
},
settings: RouteSettings(arguments: arguments, name: name),
),
).whenComplete(() {
_isDialogOpen = false;
}).then((value) {
return value;
});
}