of static method

Returns the nearest CheckboxTheme.

Implementation

static CheckboxThemeData of(BuildContext context) {
  final CheckboxTheme? checkboxTheme =
      context.dependOnInheritedWidgetOfExactType<CheckboxTheme>();
  CheckboxThemeData? checkboxThemeData = checkboxTheme?.data;

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

    checkboxThemeData ??= themeData.checkboxTheme;

    final checkboxValue =
        _CheckboxThemeData(textTheme: textTheme, colorScheme: colorScheme);

    final Color disabledColor =
        checkboxThemeData.disabledColor ?? checkboxValue.disabledColor;
    final Color activeColor =
        checkboxThemeData.activeColor ?? checkboxValue.activeColor;
    final Color activeHoverColor =
        checkboxThemeData.activeHoverColor ?? checkboxValue.activeHoverColor;
    final Color inactiveColor =
        checkboxThemeData.inactiveColor ?? checkboxValue.inactiveColor;
    final Color inactiveHoverColor = checkboxThemeData.inactiveHoverColor ??
        checkboxValue.inactiveHoverColor;
    final Color foreground =
        checkboxThemeData.foreground ?? checkboxValue.foreground;
    final double containerSize =
        checkboxThemeData.containerSize ?? checkboxValue.containerSize;

    return checkboxThemeData.copyWith(
      disabledColor: disabledColor,
      activeColor: activeColor,
      activeHoverColor: activeHoverColor,
      inactiveColor: inactiveColor,
      inactiveHoverColor: inactiveHoverColor,
      foreground: foreground,
      containerSize: containerSize,
    );
  }

  assert(checkboxThemeData._isConcrete);

  return checkboxThemeData;
}