getColorImpl method Null safety

dynamic getColorImpl(
  1. dynamic colorScheme,
  2. dynamic materialColor,
  3. ColorDestination colorDestination
)

Returns a shade of a materialColor

For instance, if you want to display a red button, you'll use Colors.red as root color, the destination will be ColorDestination.BUTTON_BACKGROUND, and you'll specify the current ColorScheme. For the moment, the ColorScheme matters only for the light/dark switch.

Implementation

@protected
Color? getColorImpl(
  final ColorScheme colorScheme,
  final MaterialColor materialColor,
  final ColorDestination colorDestination,
) {
  if (colorScheme.brightness == Brightness.light) {
    switch (colorDestination) {
      case ColorDestination.APP_BAR_BACKGROUND:
      case ColorDestination.SURFACE_FOREGROUND:
      case ColorDestination.BUTTON_BACKGROUND:
        return materialColor[800]!;
      case ColorDestination.APP_BAR_FOREGROUND:
      case ColorDestination.SURFACE_BACKGROUND:
      case ColorDestination.BUTTON_FOREGROUND:
        return materialColor[100]!;
    }
  }
  switch (colorDestination) {
    case ColorDestination.APP_BAR_BACKGROUND:
      return null;
    case ColorDestination.SURFACE_BACKGROUND:
    case ColorDestination.BUTTON_BACKGROUND:
      return materialColor[900]!.withOpacity(ADDITIONAL_OPACITY_FOR_DARK);
    case ColorDestination.APP_BAR_FOREGROUND:
    case ColorDestination.SURFACE_FOREGROUND:
    case ColorDestination.BUTTON_FOREGROUND:
      return materialColor[100]!;
  }
}