ColorScheme.fromSwatch constructor

ColorScheme.fromSwatch(
  1. {MaterialColor primarySwatch: Colors.blue,
  2. Color primaryColorDark,
  3. Color accentColor,
  4. Color cardColor,
  5. Color backgroundColor,
  6. Color errorColor,
  7. Brightness brightness: Brightness.light}
)

Create a color scheme from a MaterialColor swatch.

This constructor is used by ThemeData to create its default color scheme.

Implementation

factory ColorScheme.fromSwatch({
  MaterialColor primarySwatch = Colors.blue,
  Color primaryColorDark,
  Color accentColor,
  Color cardColor,
  Color backgroundColor,
  Color errorColor,
  Brightness brightness = Brightness.light,
}) {
  assert(primarySwatch != null);
  assert(brightness != null);

  final bool isDark = brightness == Brightness.dark;
  final bool primaryIsDark = _brightnessFor(primarySwatch) == Brightness.dark;
  final Color secondary = accentColor ?? (isDark ? Colors.tealAccent[200] : primarySwatch);
  final bool secondaryIsDark = _brightnessFor(secondary) == Brightness.dark;

  return ColorScheme(
    primary: primarySwatch,
    primaryVariant: primaryColorDark ?? (isDark ? Colors.black : primarySwatch[700]),
    secondary: secondary,
    secondaryVariant: isDark ? Colors.tealAccent[700] : primarySwatch[700],
    surface: cardColor ?? (isDark ? Colors.grey[800] : Colors.white),
    background: backgroundColor ?? (isDark ? Colors.grey[700] : primarySwatch[200]),
    error: errorColor ?? Colors.red[700],
    onPrimary: primaryIsDark ? Colors.white : Colors.black,
    onSecondary: secondaryIsDark ? Colors.white : Colors.black,
    onSurface: isDark ? Colors.white : Colors.black,
    onBackground: primaryIsDark ? Colors.white : Colors.black,
    onError: isDark ? Colors.black : Colors.white,
    brightness: brightness,
  );
}