createYaruLightTheme function
Helper function to create a new Yaru light theme
Implementation
ThemeData createYaruLightTheme({
required Color primaryColor,
Color? elevatedButtonColor,
Color? elevatedButtonTextColor,
bool? useMaterial3 = true,
}) {
final secondary = primaryColor.scale(lightness: 0.2).cap(saturation: .9);
final secondaryContainer =
primaryColor.scale(lightness: 0.85).cap(saturation: .5);
final tertiary = primaryColor.scale(lightness: 0.5).cap(saturation: .8);
final tertiaryContainer =
primaryColor.scale(lightness: 0.75).cap(saturation: .75);
final colorScheme = ColorScheme.fromSeed(
seedColor: primaryColor,
error: YaruColors.light.error,
onError: Colors.white,
brightness: Brightness.light,
primary: primaryColor,
onPrimary: contrastColor(primaryColor),
primaryContainer: YaruColors.porcelain,
onPrimaryContainer: YaruColors.jet,
inversePrimary: YaruColors.jet,
secondary: secondary,
onSecondary: contrastColor(secondary),
secondaryContainer: secondaryContainer,
onSecondaryContainer: contrastColor(secondaryContainer),
background: Colors.white,
onBackground: YaruColors.jet,
surface: Colors.white,
onSurface: YaruColors.jet,
inverseSurface: YaruColors.jet,
onInverseSurface: YaruColors.porcelain,
surfaceTint: YaruColors.warmGrey,
surfaceVariant: YaruColors.warmGrey,
tertiary: tertiary,
onTertiary: contrastColor(tertiary),
tertiaryContainer: tertiaryContainer,
onTertiaryContainer: contrastColor(tertiaryContainer),
onSurfaceVariant: YaruColors.coolGrey,
outline: const Color.fromARGB(255, 221, 221, 221),
outlineVariant: Colors.black,
scrim: Colors.black,
);
return createYaruTheme(
colorScheme: colorScheme,
dividerColor: colorScheme.isHighContrast ? null : kDividerColorLight,
elevatedButtonColor: elevatedButtonColor,
elevatedButtonTextColor: elevatedButtonTextColor,
useMaterial3: useMaterial3,
);
}