of static method

Returns the nearest TooltipTheme.

Implementation

static TooltipThemeData of(BuildContext context) {
  final TooltipTheme? tooltipTheme =
      context.dependOnInheritedWidgetOfExactType<TooltipTheme>();
  TooltipThemeData? tooltipThemeData = tooltipTheme?.data;

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

    tooltipThemeData ??= themeData.tooltipTheme;

    final tooltipValue =
        _TooltipThemeData(textTheme: textTheme, colorScheme: colorScheme);

    final double height = tooltipThemeData.height ?? tooltipValue.height;
    final double maxWidth =
        tooltipThemeData.maxWidth ?? tooltipValue.maxWidth;
    final double verticalOffset =
        tooltipThemeData.verticalOffset ?? tooltipValue.verticalOffset;
    final Color backgroundColor =
        tooltipThemeData.backgroundColor ?? tooltipValue.backgroundColor;
    final TextStyle textStyle =
        tooltipThemeData.textStyle ?? tooltipValue.textStyle;
    final EdgeInsetsGeometry padding =
        tooltipThemeData.padding ?? tooltipValue.padding;
    final EdgeInsetsGeometry margin =
        tooltipThemeData.margin ?? tooltipValue.margin;
    final Duration showDuration =
        tooltipThemeData.showDuration ?? tooltipValue.showDuration;
    final Duration waitDuration =
        tooltipThemeData.waitDuration ?? tooltipValue.waitDuration;

    return tooltipThemeData.copyWith(
      height: height,
      maxWidth: maxWidth,
      verticalOffset: verticalOffset,
      backgroundColor: backgroundColor,
      textStyle: textStyle,
      padding: padding,
      margin: margin,
      showDuration: showDuration,
      waitDuration: waitDuration,
    );
  }

  assert(tooltipThemeData._isConcrete);

  return tooltipThemeData;
}