setTheme method

void setTheme(
  1. AppThemeMode mode, {
  2. ColorScheme? lightScheme,
  3. ColorScheme? darkScheme,
})

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;
  }
}