of static method

Returns the nearest DialogTheme.

Implementation

static DialogThemeData of(BuildContext context) {
  final DialogTheme? dialogTheme =
      context.dependOnInheritedWidgetOfExactType<DialogTheme>();
  DialogThemeData? dialogThemeData = dialogTheme?.data;

  if (dialogThemeData == null || !dialogThemeData._isConcrete) {
    final ThemeData themeData = Theme.of(context);
    final TextTheme textTheme = themeData.textTheme;
    final ColorScheme colorScheme = themeData.colorScheme;

    dialogThemeData ??= themeData.dialogTheme;

    final dialogValue =
        _DialogThemeData(textTheme: textTheme, colorScheme: colorScheme);

    final BoxConstraints constraints =
        dialogThemeData.constraints ?? dialogValue.constraints;
    final EdgeInsets menuPadding =
        dialogThemeData.menuPadding ?? dialogValue.menuPadding;
    final double menuSpacing =
        dialogThemeData.menuSpacing ?? dialogValue.menuSpacing;
    final EdgeInsets titlePadding =
        dialogThemeData.titlePadding ?? dialogValue.titlePadding;
    final EdgeInsets bodyPadding =
        dialogThemeData.bodyPadding ?? dialogValue.bodyPadding;
    final Color background =
        dialogThemeData.background ?? dialogValue.background;
    final Color barrierColor =
        dialogThemeData.barrierColor ?? dialogValue.barrierColor;
    final TextStyle titleTextStyle =
        dialogThemeData.titleTextStyle ?? dialogValue.titleTextStyle;
    final TextAlign bodyTextAlign =
        dialogThemeData.bodyTextAlign ?? dialogValue.bodyTextAlign;
    final ImageFilter imageFilter =
        dialogThemeData.imageFilter ?? dialogValue.imageFilter;

    return dialogThemeData.copyWith(
      constraints: constraints,
      menuPadding: menuPadding,
      menuSpacing: menuSpacing,
      titlePadding: titlePadding,
      bodyPadding: bodyPadding,
      background: background,
      barrierColor: barrierColor,
      titleTextStyle: titleTextStyle,
      bodyTextAlign: bodyTextAlign,
      imageFilter: imageFilter,
    );
  }

  assert(dialogThemeData._isConcrete);

  return dialogThemeData;
}