of static method

Returns the nearest ScrollbarTheme.

Implementation

static ScrollbarThemeData of(BuildContext context) {
  final ScrollbarTheme? scrollbarTheme =
      context.dependOnInheritedWidgetOfExactType<ScrollbarTheme>();
  ScrollbarThemeData? scrollbarThemeData = scrollbarTheme?.data;

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

    scrollbarThemeData ??= themeData.scrollbarTheme;

    final scrollbarValue =
        _ScrollbarThemeData(textTheme: textTheme, colorScheme: colorScheme);

    final Color disabledColor =
        scrollbarThemeData.disabledColor ?? scrollbarValue.disabledColor;
    final Color color = scrollbarThemeData.color ?? scrollbarValue.color;
    final Color hoverColor =
        scrollbarThemeData.hoverColor ?? scrollbarValue.hoverColor;
    final Color highlightColor =
        scrollbarThemeData.highlightColor ?? scrollbarValue.highlightColor;
    final Color inhoverColor =
        scrollbarThemeData.inhoverColor ?? scrollbarValue.inhoverColor;
    final Color foreground =
        scrollbarThemeData.foreground ?? scrollbarValue.foreground;
    final Color trackColor =
        scrollbarThemeData.trackColor ?? scrollbarValue.trackColor;

    return scrollbarThemeData.copyWith(
      disabledColor: disabledColor,
      color: color,
      hoverColor: hoverColor,
      highlightColor: highlightColor,
      inhoverColor: inhoverColor,
      foreground: foreground,
      trackColor: trackColor,
    );
  }

  assert(scrollbarThemeData._isConcrete);

  return scrollbarThemeData;
}