Implementation
void setTheme(AppThemeMode mode,
{ColorScheme? lightScheme, ColorScheme? darkScheme}) {
switch (mode) {
case AppThemeMode.light:
emit(ThemeState(theme(), AppThemeMode.light,
dynamicLightScheme: state.dynamicLightScheme,
dynamicDarkScheme: state.dynamicDarkScheme,
isDynamicColorAvailable: state.isDynamicColorAvailable));
break;
case AppThemeMode.dark:
emit(ThemeState(darkTheme(), AppThemeMode.dark,
dynamicLightScheme: state.dynamicLightScheme,
dynamicDarkScheme: state.dynamicDarkScheme,
isDynamicColorAvailable: state.isDynamicColorAvailable));
break;
case AppThemeMode.highContrastLight:
emit(ThemeState(
highContrastLightTheme(), AppThemeMode.highContrastLight,
dynamicLightScheme: state.dynamicLightScheme,
dynamicDarkScheme: state.dynamicDarkScheme,
isDynamicColorAvailable: state.isDynamicColorAvailable));
break;
case AppThemeMode.highContrastDark:
emit(ThemeState(highContrastDarkTheme(), AppThemeMode.highContrastDark,
dynamicLightScheme: state.dynamicLightScheme,
dynamicDarkScheme: state.dynamicDarkScheme,
isDynamicColorAvailable: state.isDynamicColorAvailable));
break;
case AppThemeMode.system:
emit(ThemeState(theme(), AppThemeMode.system,
dynamicLightScheme: state.dynamicLightScheme,
dynamicDarkScheme: state.dynamicDarkScheme,
isDynamicColorAvailable: state.isDynamicColorAvailable));
break;
case AppThemeMode.dynamic:
final useLightScheme = state.dynamicLightScheme ?? lightScheme;
final useDarkScheme = state.dynamicDarkScheme ?? darkScheme;
final themeData = useLightScheme != null
? dynamicLightTheme(useLightScheme)
: theme();
emit(ThemeState(themeData, AppThemeMode.dynamic,
dynamicLightScheme: useLightScheme,
dynamicDarkScheme: useDarkScheme,
isDynamicColorAvailable: state.isDynamicColorAvailable));
break;
}
}