of static method

Returns the nearest MessageTheme.

Implementation

static MessageThemeData of(BuildContext context) {
  final MessageTheme? messageTheme =
      context.dependOnInheritedWidgetOfExactType<MessageTheme>();
  MessageThemeData? messageThemeData = messageTheme?.data;

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

    messageThemeData ??= themeData.messageTheme;

    final messageValue =
        _MessageThemeData(textTheme: textTheme, colorScheme: colorScheme);

    final TextStyle textStyle =
        messageThemeData.textStyle ?? messageValue.textStyle;
    final TextStyle titleTextStyle =
        messageThemeData.titleTextStyle ?? messageValue.titleTextStyle;
    final EdgeInsets titlePadding =
        messageThemeData.titlePadding ?? messageValue.titlePadding;
    final EdgeInsets padding =
        messageThemeData.padding ?? messageValue.padding;
    final Color highlightColor =
        messageThemeData.highlightColor ?? messageValue.highlightColor;
    final Color backgroundColor =
        messageThemeData.backgroundColor ?? messageValue.backgroundColor;
    final double itemSpacing =
        messageThemeData.itemSpacing ?? messageValue.itemSpacing;
    final Color infoColor =
        messageThemeData.infoColor ?? messageValue.infoColor;
    final Color errorColor =
        messageThemeData.errorColor ?? messageValue.errorColor;
    final Color warningColor =
        messageThemeData.warningColor ?? messageValue.warningColor;
    final Color successColor =
        messageThemeData.successColor ?? messageValue.successColor;
    final Curve animationCurve =
        messageThemeData.animationCurve ?? messageValue.animationCurve;
    final Duration duration =
        messageThemeData.duration ?? messageValue.duration;
    final Duration animationDuration =
        messageThemeData.animationDuration ?? messageValue.animationDuration;

    return messageThemeData.copyWith(
      textStyle: textStyle,
      titleTextStyle: titleTextStyle,
      titlePadding: titlePadding,
      padding: padding,
      highlightColor: highlightColor,
      backgroundColor: backgroundColor,
      itemSpacing: itemSpacing,
      infoColor: infoColor,
      errorColor: errorColor,
      warningColor: warningColor,
      successColor: successColor,
      animationCurve: animationCurve,
      duration: duration,
      animationDuration: animationDuration,
    );
  }

  assert(messageThemeData._isConcrete);

  return messageThemeData;
}