dialog<T> method

Future<T?> dialog<T>(
  1. Widget widget, {
  2. bool barrierDismissible = true,
  3. Color? barrierColor,
  4. bool useSafeArea = true,
  5. GlobalKey<NavigatorState>? navigatorKey,
  6. Object? arguments,
  7. Duration? transitionDuration,
  8. Curve? transitionCurve,
  9. String? name,
  10. RouteSettings? routeSettings,
  11. String? id,
})

Show a dialog. You can pass a transitionDuration and/or transitionCurve, overriding the defaults when the dialog shows up and closes. When the dialog closes, uses those animations in reverse.

Implementation

Future<T?> dialog<T>(
  Widget widget, {
  bool barrierDismissible = true,
  Color? barrierColor,
  bool useSafeArea = true,
  GlobalKey<NavigatorState>? navigatorKey,
  Object? arguments,
  Duration? transitionDuration,
  Curve? transitionCurve,
  String? name,
  RouteSettings? routeSettings,
  String? id,
}) {
  assert(debugCheckHasMaterialLocalizations(context!));

  final ThemeData theme = Theme.of(context!);
  return generalDialog<T>(
    pageBuilder: (
      BuildContext buildContext,
      Animation<double> animation,
      Animation<double> secondaryAnimation,
    ) {
      final Widget pageChild = widget;
      Widget dialog = Builder(
        builder: (BuildContext context) =>
            Theme(data: theme, child: pageChild),
      );
      if (useSafeArea) {
        dialog = SafeArea(child: dialog);
      }
      return dialog;
    },
    barrierDismissible: barrierDismissible,
    barrierLabel: MaterialLocalizations.of(context!).modalBarrierDismissLabel,
    barrierColor: barrierColor ?? Colors.black54,
    transitionDuration: transitionDuration ?? defaultDialogTransitionDuration,
    transitionBuilder: (
      BuildContext context,
      Animation<double> animation,
      Animation<double> secondaryAnimation,
      Widget child,
    ) =>
        FadeTransition(
      opacity: CurvedAnimation(
        parent: animation,
        curve: transitionCurve ?? defaultDialogTransitionCurve,
      ),
      child: child,
    ),
    navigatorKey: navigatorKey,
    routeSettings:
        routeSettings ?? RouteSettings(arguments: arguments, name: name),
    id: id,
  );
}