setToPremade method
Set Playground settings and FCS theme to selected premade config.
Implementation
Future<void> setToPremade({int settingsId = 0}) async {
//
// 0) Playground defaults.
//
// First reset all settings to defaults so we start with a clean slate.
// But we do not change theme mode, we keep it. Also we will not notify
// any listeners yet, we do that once when all settings have been set.
// If there is no matching settings ID, settings are just rest to defaults.
await resetAllToDefaults(resetMode: false, doNotify: false);
// 1) Material 3 default.
if (settingsId == 1) {
// Blend mode and levels.
setBlendLevel(0, false);
setBlendLevelDark(0, false);
setBlendOnLevel(0, false);
setBlendOnLevelDark(0, false);
// Seed generation - Basic M3 default.
setUseKeyColors(true, false);
// Effects: M2 Divider, interaction effects, tinted disable.
setUseM2StyleDividerInM3(false, false);
setInteractionEffects(false, false);
setTintedDisabledControls(false, false);
// Set SnackBar to M3.
setSnackBarSchemeColor(SchemeColor.inverseSurface, false);
setSnackBarElevation(6, false);
// Set TextField to M3
await setTextFieldToM3(false);
// Set Navigators to M3
await setNavigationBarToM3(false);
await setNavigationRailToM3(false);
// Set tooltip to M3 like
setTooltipRadius(4, false);
setTooltipOpacity(0.9, false);
// Not entirely correct color with defaults, but best we can do with
// ColorScheme based colors. Most likely this is what it should be in M3,
// but Flutter does not implement it yet, it still uses M2 defaults in M3.
setTooltipSchemeColor(SchemeColor.inverseSurface, false);
}
// 2) Primary navigators.
else if (settingsId == 2) {
// Legacy swap OFF.
setSwapLegacyColors(false, false);
// Set blend modes and levels.
setSurfaceModeLight(FlexSurfaceMode.highBackgroundLowScaffold, false);
setSurfaceModeDark(FlexSurfaceMode.highBackgroundLowScaffold, false);
setBlendLevel(2, false);
setBlendLevelDark(8, false);
setBlendLightOnColors(false, false);
setBlendDarkOnColors(true, false);
setBlendOnLevel(10, false);
setBlendOnLevelDark(8, false);
// Seed generation - Turn it OFF.
setUseKeyColors(false, false);
// Effects: M2 Divider, interaction effects, tinted disable.
setUseM2StyleDividerInM3(true, false);
setInteractionEffects(true, false);
setTintedDisabledControls(true, false);
// Text theme blends: ON light, ON dark
setBlendLightTextTheme(true, false);
setBlendDarkTextTheme(true, false);
// OutlinedButton settings
setOutlinedButtonOutlineSchemeColor(SchemeColor.primary, false);
setOutlinedButtonPressedBorderWidth(2, false);
// ToggleButtons settings
setToggleButtonsBorderSchemeColor(SchemeColor.primary, false);
// SegmentedButton settings
setSegmentedButtonSchemeColor(SchemeColor.primary, false);
setSegmentedButtonBorderSchemeColor(SchemeColor.primary, false);
// Set toggles colored
setUnselectedToggleIsColored(true, false);
// Slider Settings
setSliderValueTinted(true, false);
// Set TextField Settings via InputDecorator
setInputDecoratorSchemeColorLight(SchemeColor.primary, false);
setInputDecoratorSchemeColorDark(SchemeColor.primary, false);
setInputDecoratorBackgroundAlphaLight(21, false);
setInputDecoratorBackgroundAlphaDark(43, false);
setInputDecoratorPrefixIconSchemeColor(SchemeColor.primary, false);
setInputDecoratorBorderRadius(12, false);
setInputDecoratorUnfocusedHasBorder(false, false);
// Menus and Popup
setPopupMenuBorderRadius(6, false);
setPopupMenuElevation(8, false);
setMenuRadius(6, false);
setMenuElevation(8, false);
setMenuBarRadius(0, false);
setMenuBarElevation(1, false);
// Drawer settings
setDrawerIndicatorSchemeColor(SchemeColor.primary, false);
// BottomNavigationBar
setBottomNavBarMuteUnselected(false, false);
// NavigationBar settings
setNavBarMuteUnselected(false, false);
setNavBarSelectedIconSchemeColor(SchemeColor.onPrimary, false);
setNavBarSelectedLabelSchemeColor(SchemeColor.primary, false);
setNavBarIndicatorSchemeColor(SchemeColor.primary, false);
setNavBarIndicatorOpacity(1.0, false);
// NavigationRail settings
setNavRailMuteUnselected(false, false);
setNavRailSelectedIconSchemeColor(SchemeColor.onPrimary, false);
setNavRailSelectedLabelSchemeColor(SchemeColor.primary, false);
setNavRailIndicatorSchemeColor(SchemeColor.primary, false);
setNavRailIndicatorOpacity(1.0, false);
}
// 3) Fabulous 12.
else if (settingsId == 3) {
// The default radius to 12 for all.
setDefaultRadius(12, false);
// Legacy swap OFF.
setSwapLegacyColors(false, false);
// Set blend modes and levels.
setSurfaceModeLight(FlexSurfaceMode.highScaffoldLowSurface, false);
setSurfaceModeDark(FlexSurfaceMode.highScaffoldLowSurface, false);
setBlendLevel(1, false);
setBlendLevelDark(2, false);
setBlendOnLevel(8, false);
setBlendOnLevelDark(10, false);
// Seed generation - Turn it ON, use all 3 main seeds. Vivid algo.
setUseKeyColors(true, false);
setUseSecondary(true, false);
setUseTertiary(true, false);
setKeepPrimary(true, false);
setUsedFlexToneSetup(7, false); // <== Jolly config.
// Effects: M2 Divider, interaction effects, tinted disable.
setUseM2StyleDividerInM3(true, false);
setInteractionEffects(true, false);
setTintedDisabledControls(true, false);
// Text theme blends
setBlendLightTextTheme(false, false);
setBlendDarkTextTheme(true, false);
// Elevated button
setElevatedButtonSchemeColor(SchemeColor.onPrimaryContainer, false);
setElevatedButtonSecondarySchemeColor(SchemeColor.primaryContainer, false);
// OutlinedButton settings
setOutlinedButtonOutlineSchemeColor(SchemeColor.primary, false);
// ToggleButtons settings
setToggleButtonsBorderSchemeColor(SchemeColor.primary, false);
// SegmentedButton settings
setSegmentedButtonSchemeColor(SchemeColor.primary, false);
setSegmentedButtonBorderSchemeColor(SchemeColor.primary, false);
// Set toggles colored
setUnselectedToggleIsColored(true, false);
// Slider Settings
setSliderValueTinted(true, false);
// Set TextField Settings via InputDecorator
setInputDecoratorSchemeColorLight(SchemeColor.primary, false);
setInputDecoratorSchemeColorDark(SchemeColor.primary, false);
setInputDecoratorBackgroundAlphaLight(31, false);
setInputDecoratorBackgroundAlphaDark(43, false);
setInputDecoratorPrefixIconSchemeColor(SchemeColor.primary, false);
setInputDecoratorPrefixIconDarkSchemeColor(SchemeColor.primary, false);
setInputDecoratorUnfocusedHasBorder(false, false);
setInputDecoratorFocusedBorderWidth(1.0, false);
// FAB settings
setFabUseShape(true, false);
setFabAlwaysCircular(true, false);
setFabSchemeColor(SchemeColor.tertiary, false);
// Menus and Popup
setPopupMenuBorderRadius(8, false);
setPopupMenuElevation(3, false);
setMenuRadius(8, false);
setMenuElevation(3, false);
setMenuBarRadius(0, false);
setMenuBarElevation(2, false);
setMenuBarShadowColor(Colors.transparent, false);
// Drawer settings
setDrawerIndicatorSchemeColor(SchemeColor.primary, false);
setDrawerIndicatorBorderRadius(12, false);
// BottomNavigationBar
setBottomNavBarMuteUnselected(false, false);
// NavigationBar settings
setNavBarMuteUnselected(false, false);
setNavBarSelectedIconSchemeColor(SchemeColor.onPrimary, false);
setNavBarSelectedLabelSchemeColor(SchemeColor.primary, false);
setNavBarIndicatorSchemeColor(SchemeColor.primary, false);
setNavBarIndicatorOpacity(1.0, false);
setNavBarIndicatorBorderRadius(12, false);
// NavigationRail settings
setNavRailMuteUnselected(false, false);
setNavRailBackgroundSchemeColor(SchemeColor.surface);
setNavRailSelectedIconSchemeColor(SchemeColor.onPrimary, false);
setNavRailSelectedLabelSchemeColor(SchemeColor.primary, false);
setNavRailIndicatorSchemeColor(SchemeColor.primary, false);
setNavRailIndicatorOpacity(1.0, false);
setNavRailIndicatorBorderRadius(12, false);
}
// 4) Material 3 does M2
else if (settingsId == 4) {
// The default radius to 12 for all.
setDefaultRadius(4, false);
// No legacy swap, this is M2 emulation.
setSwapLegacyColors(false, false);
// Set blend modes and levels.
setBlendLightOnColors(false, false);
setBlendDarkOnColors(false, false);
setBlendLevel(0, false);
setBlendLevelDark(0, false);
setBlendOnLevel(0, false);
setBlendOnLevelDark(0, false);
// Elevation tint and shadows, we keep it in dark mode.
setAdaptiveRemoveElevationTintLight(AdaptiveTheme.all, false);
setAdaptiveElevationShadowsBackLight(AdaptiveTheme.all, false);
setAdaptiveAppBarScrollUnderOffLight(AdaptiveTheme.all, false);
setAdaptiveRemoveElevationTintDark(AdaptiveTheme.off, false);
setAdaptiveElevationShadowsBackDark(AdaptiveTheme.all, false);
setAdaptiveAppBarScrollUnderOffDark(AdaptiveTheme.all, false);
// Effects: M2 Divider, interaction effects, tinted disable.
setUseM2StyleDividerInM3(true, false);
setInteractionEffects(false, false);
setTintedDisabledControls(false, false);
// Text theme blends
setBlendLightTextTheme(false, false);
setBlendDarkTextTheme(false, false);
// AppBar settings
setAppBarStyleLight(FlexAppBarStyle.primary, false);
setAppBarStyleDark(FlexAppBarStyle.material, false);
setAppBarElevationLight(4, false);
setAppBarElevationDark(4, false);
setAppBarScrolledUnderElevationLight(4.0, false);
setAppBarScrolledUnderElevationDark(4.0, false);
setBottomAppBarElevationLight(8, false);
setBottomAppBarElevationDark(8, false);
// TabBar
setTabBarStyle(FlexTabBarStyle.forAppBar, false);
setTabBarDividerColor(Colors.transparent, false);
setTabBarIndicatorSize(TabBarIndicatorSize.tab, false);
setTabBarIndicatorWeight(2, false);
setTabBarIndicatorTopRadius(0, false);
// Elevated button - Make look like it used to in M2.
setElevatedButtonSchemeColor(SchemeColor.onPrimary, false);
setElevatedButtonSecondarySchemeColor(SchemeColor.primary, false);
// Set TextField Settings via InputDecorator
setInputDecoratorSchemeColorLight(SchemeColor.onSurface, false);
setInputDecoratorSchemeColorDark(SchemeColor.onSurface, false);
setInputDecoratorBackgroundAlphaLight(13, false);
setInputDecoratorBackgroundAlphaDark(20, false);
setInputDecoratorBorderSchemeColorLight(SchemeColor.primary, false);
setInputDecoratorBorderSchemeColorDark(SchemeColor.primary, false);
setInputDecoratorUnfocusedBorderIsColored(false, false);
// FAB settings
setFabUseShape(true, false);
setFabAlwaysCircular(true, false);
// With real M3 schemes this looks bad, but it is M2 color mapping.
setFabSchemeColor(SchemeColor.secondary, false);
// Chip settings
setChipSchemeColor(SchemeColor.primary, false);
setChipBorderRadius(20, false);
// Menus and Popup
setPopupMenuElevation(8, false);
setMenuElevation(8, false);
setMenuBarRadius(0, false);
setMenuBarElevation(1, false);
// Tooltips
setTooltipRadius(4, false);
// Dialog settings
setDialogElevation(24, false);
setDatePickerHeaderBackgroundSchemeColor(SchemeColor.primary, false);
// Set SnackBar to M2/M3 style.
setSnackBarSchemeColor(SchemeColor.inverseSurface, false);
// Drawer settings
setDrawerElevation(16, false);
setDrawerWidth(304, false);
// BottomSheet
setBottomSheetElevation(10, false);
setBottomSheetModalElevation(20, false);
// BottomNavigationBar
setBottomNavigationBarElevation(8, false);
setBottomNavBarSelectedSchemeColor(SchemeColor.primary, false);
setBottomNavBarMuteUnselected(true, false);
// NavigationBar settings
setNavBarIndicatorSchemeColor(SchemeColor.secondary, false);
setNavBarBackgroundSchemeColor(SchemeColor.surfaceVariant, false);
setNavBarSelectedIconSchemeColor(SchemeColor.onSurface, false);
setNavBarSelectedLabelSchemeColor(SchemeColor.onSurface, false);
setNavBarUnselectedSchemeColor(SchemeColor.onSurface, false);
setNavBarElevation(0, false);
setNavBarMuteUnselected(true, false);
// NavigationRail settings
setNavRailSelectedIconSchemeColor(SchemeColor.onSurface, false);
setNavRailSelectedLabelSchemeColor(SchemeColor.onSurface, false);
setNavRailUnselectedSchemeColor(SchemeColor.onSurface, false);
setNavRailIndicatorSchemeColor(SchemeColor.secondary, false);
setNavRailMuteUnselected(true, false);
}
// 5) High contrast
else if (settingsId == 5) {
// Legacy swap
setSwapLegacyColors(true, false);
// Set blend modes and levels.
setSurfaceModeLight(FlexSurfaceMode.highScaffoldLowSurface, false);
setSurfaceModeDark(FlexSurfaceMode.highScaffoldLowSurface, false);
setBlendLevel(22, false);
setBlendLevelDark(18, false);
setLightIsWhite(true, false);
setDarkIsTrueBlack(true, false);
// Seed generation - Turn it ON, use all 3 main seeds. Vivid algo.
setUseKeyColors(true, false);
setUseSecondary(true, false);
setUseTertiary(true, false);
setUsedFlexToneSetup(6, false); // <== Ultra contrast.
setKeepPrimary(true, false);
setKeepSecondary(true, false);
setKeepTertiary(true, false);
setOnMainsUseBWLight(true, false);
setOnMainsUseBWDark(false, false);
setOnSurfacesUseBWLight(true, false);
setOnSurfacesUseBWDark(false, false);
// Effects: M2 Divider, interaction effects, tinted disable.
setUseM2StyleDividerInM3(true, false);
setInteractionEffects(true, false);
setTintedDisabledControls(true, false);
// Text theme blends
setBlendLightTextTheme(false, false);
setBlendDarkTextTheme(false, false);
// AppBar settings
setAppBarStyleLight(FlexAppBarStyle.background, false);
setAppBarStyleDark(FlexAppBarStyle.background, false);
setBottomAppBarElevationLight(1, false);
setBottomAppBarElevationDark(2, false);
// Set TextField Settings via InputDecorator
setInputDecoratorSchemeColorLight(SchemeColor.primary, false);
setInputDecoratorSchemeColorDark(SchemeColor.primary, false);
setInputDecoratorBackgroundAlphaLight(21, false);
setInputDecoratorBackgroundAlphaDark(43, false);
setInputDecoratorPrefixIconSchemeColor(SchemeColor.primary, false);
setInputDecoratorPrefixIconDarkSchemeColor(SchemeColor.primary, false);
setInputDecoratorBorderRadius(8, false);
setInputDecoratorUnfocusedHasBorder(false, false);
// FAB settings
setFabSchemeColor(SchemeColor.tertiary, false);
// Elevated button
setElevatedButtonSchemeColor(SchemeColor.onPrimaryContainer, false);
setElevatedButtonSecondarySchemeColor(SchemeColor.primaryContainer, false);
// SegmentedButton settings
setSegmentedButtonSchemeColor(SchemeColor.primary, false);
// Menus and Popup
setPopupMenuBorderRadius(6, false);
setPopupMenuElevation(4, false);
setMenuRadius(6, false);
setMenuElevation(4, false);
setMenuBarRadius(0, false);
setMenuBarElevation(1, false);
// Dialogs
setDialogElevation(3, false);
setDialogBorderRadius(20, false);
// SnackBar
setSnackBarSchemeColor(SchemeColor.inverseSurface, false);
// BottomSheet
setBottomSheetElevation(2, false);
setBottomSheetModalElevation(3, false);
setBottomSheetBorderRadius(20, false);
// Drawer settings
setDrawerIndicatorSchemeColor(SchemeColor.primary, false);
// BottomNavigationBar
setBottomNavBarMuteUnselected(false, false);
setBottomNavBarBackgroundSchemeColor(SchemeColor.surfaceVariant, false);
// NavigationBar settings
setNavBarBackgroundSchemeColor(SchemeColor.background, false);
setNavBarMuteUnselected(false, false);
setNavBarSelectedIconSchemeColor(SchemeColor.background, false);
setNavBarSelectedLabelSchemeColor(SchemeColor.primary, false);
setNavBarElevation(1, false);
setNavBarIndicatorSchemeColor(SchemeColor.primary, false);
setNavBarIndicatorOpacity(1.0, false);
// NavigationRail settings
setNavRailMuteUnselected(false, false);
setNavRailSelectedIconSchemeColor(SchemeColor.background, false);
setNavRailSelectedLabelSchemeColor(SchemeColor.primary, false);
setNavRailIndicatorSchemeColor(SchemeColor.primary, false);
setNavRailIndicatorOpacity(1.0, false);
}
// 6) One shade
else if (settingsId == 6) {
// Legacy swap
setSwapLegacyColors(false, false);
setUsedColors(1, false);
// Set blend modes and levels.
setSurfaceModeLight(FlexSurfaceMode.highBackgroundLowScaffold, false);
setSurfaceModeDark(FlexSurfaceMode.highBackgroundLowScaffold, false);
setBlendLevel(1, false);
setBlendLevelDark(4, false);
setBlendOnLevel(10, false);
setBlendOnLevelDark(10, false);
// Seed generation - Turn it ON, use all 3 main seeds. Vivid algo.
setUseKeyColors(true, false);
setUseSecondary(true, false);
setUseTertiary(true, false);
setUsedFlexToneSetup(9, false); // One hue
setKeepPrimary(true, false);
// Effects: M2 Divider, interaction effects, tinted disable.
setUseM2StyleDividerInM3(true, false);
setInteractionEffects(true, false);
setTintedDisabledControls(true, false);
// Text theme blends
setBlendLightTextTheme(false, false);
setBlendDarkTextTheme(true, false);
// AppBar settings
setAppBarStyleLight(FlexAppBarStyle.background, false);
setAppBarStyleDark(FlexAppBarStyle.background, false);
// Set TextField Settings via InputDecorator
setInputDecoratorSchemeColorLight(SchemeColor.primary, false);
setInputDecoratorSchemeColorDark(SchemeColor.primary, false);
setInputDecoratorBackgroundAlphaLight(21, false);
setInputDecoratorBackgroundAlphaDark(43, false);
setInputDecoratorPrefixIconSchemeColor(SchemeColor.primary, false);
setInputDecoratorPrefixIconDarkSchemeColor(SchemeColor.primary, false);
setInputDecoratorBorderRadius(8, false);
setInputDecoratorUnfocusedHasBorder(false, false);
// Elevated button
setElevatedButtonSchemeColor(SchemeColor.onPrimaryContainer, false);
setElevatedButtonSecondarySchemeColor(SchemeColor.primaryContainer, false);
// SegmentedButton settings
setSegmentedButtonSchemeColor(SchemeColor.primary, false);
// Menus and Popup
setPopupMenuBorderRadius(6, false);
setPopupMenuElevation(4, false);
setMenuRadius(6, false);
setMenuElevation(4, false);
setMenuBarRadius(0, false);
setMenuBarElevation(1, false);
// Dialogs
setDialogElevation(3, false);
setDialogBorderRadius(20, false);
// Drawer settings
setDrawerIndicatorSchemeColor(SchemeColor.primary, false);
// BottomNavigationBar
setBottomNavBarMuteUnselected(false, false);
// NavigationBar settings
setNavBarBackgroundSchemeColor(SchemeColor.background, false);
setNavBarMuteUnselected(false, false);
setNavBarSelectedIconSchemeColor(SchemeColor.onPrimary, false);
setNavBarSelectedLabelSchemeColor(SchemeColor.primary, false);
setNavBarElevation(0, false);
// setNavBarUnselectedSchemeColor(SchemeColor.primary, false);
setNavBarIndicatorSchemeColor(SchemeColor.primary, false);
setNavBarIndicatorOpacity(1.0, false);
// NavigationRail settings
setNavRailMuteUnselected(false, false);
setNavRailSelectedIconSchemeColor(SchemeColor.onPrimary, false);
setNavRailSelectedLabelSchemeColor(SchemeColor.primary, false);
setNavRailIndicatorSchemeColor(SchemeColor.primary, false);
setNavRailIndicatorOpacity(1.0, false);
}
// 7) Platform adaptive.
else if (settingsId == 7) {
// The default radius to default for standard and 10 for adaptive.
setDefaultRadius(null, false);
setDefaultRadiusAdaptive(10, false);
setAdaptiveRadius(AdaptiveTheme.excludeWebAndroidFuchsia, false);
// Legacy swap OFF.
setSwapLegacyColors(false, false);
// Set blend modes and levels.
setSurfaceModeLight(FlexSurfaceMode.highBackgroundLowScaffold, false);
setSurfaceModeDark(FlexSurfaceMode.highBackgroundLowScaffold, false);
setBlendLevel(1, false);
setBlendLevelDark(2, false);
setBlendOnLevel(6, false);
setBlendOnLevelDark(8, false);
// Seed generation - Turn it OFF, use all 3 main seeds is set ON.
setUseKeyColors(false, false);
setUseSecondary(true, false);
setUseTertiary(true, false);
setKeepPrimary(true, false);
setUsedFlexToneSetup(7, false); // <== Jolly config.
// Effects: M2 Divider, interaction effects, tinted disable.
setUseM2StyleDividerInM3(true, false);
setInteractionEffects(true, false);
setTintedDisabledControls(true, false);
// Elevation tint and shadows, we keep elevation tint in dark mode, it
// is very useful there. We also add elevation shadows back in dark
// mode on all platforms, they are barely visible there anyway but
// may help with contrast a bit.
setAdaptiveRemoveElevationTintLight(AdaptiveTheme.excludeWebAndroidFuchsia, false);
setAdaptiveElevationShadowsBackLight(AdaptiveTheme.excludeWebAndroidFuchsia, false);
setAdaptiveAppBarScrollUnderOffLight(AdaptiveTheme.excludeWebAndroidFuchsia, false);
setAdaptiveRemoveElevationTintDark(AdaptiveTheme.off, false);
setAdaptiveElevationShadowsBackDark(AdaptiveTheme.all, false);
setAdaptiveAppBarScrollUnderOffDark(AdaptiveTheme.excludeWebAndroidFuchsia, false);
// Text theme blends
setBlendLightTextTheme(false, false);
setBlendDarkTextTheme(false, false);
// AppBar settings
setAppBarStyleLight(FlexAppBarStyle.background, false);
setAppBarStyleDark(FlexAppBarStyle.background, false);
setAppBarElevationLight(0, false);
setAppBarElevationDark(0, false);
setAppBarScrolledUnderElevationLight(1, false);
setAppBarScrolledUnderElevationDark(3, false);
setBottomAppBarElevationLight(2, false);
setBottomAppBarElevationDark(2, false);
// Elevated button
setElevatedButtonSchemeColor(SchemeColor.onPrimaryContainer, false);
setElevatedButtonSecondarySchemeColor(SchemeColor.primaryContainer, false);
// OutlinedButton settings
setOutlinedButtonOutlineSchemeColor(SchemeColor.primary, false);
// ToggleButtons settings
setToggleButtonsBorderSchemeColor(SchemeColor.primary, false);
// SegmentedButton settings
setSegmentedButtonSchemeColor(SchemeColor.primary, false);
setSegmentedButtonBorderSchemeColor(SchemeColor.primary, false);
// Set toggles colored
setUnselectedToggleIsColored(true, false);
// Slider Settings
setSliderValueTinted(true, false);
// Set TextField Settings via InputDecorator
setInputDecoratorSchemeColorLight(SchemeColor.primary, false);
setInputDecoratorSchemeColorDark(SchemeColor.primary, false);
setInputDecoratorBackgroundAlphaLight(19, false);
setInputDecoratorBackgroundAlphaDark(22, false);
setInputDecoratorPrefixIconSchemeColor(SchemeColor.primary, false);
setInputDecoratorPrefixIconDarkSchemeColor(SchemeColor.primary, false);
setInputDecoratorUnfocusedHasBorder(false, false);
setInputDecoratorFocusedBorderWidth(1.0, false);
// FAB settings
setFabUseShape(true, false);
setFabAlwaysCircular(true, false);
setFabSchemeColor(SchemeColor.tertiary, false);
// Menus and Popup
setPopupMenuBorderRadius(6, false);
setPopupMenuElevation(3, false);
setMenuRadius(6, false);
setMenuElevation(3, false);
setMenuBarRadius(0, false);
setMenuBarElevation(1, false);
setMenuBarShadowColor(Colors.transparent, false);
// Drawer settings
setDrawerElevation(1, false);
setDrawerIndicatorSchemeColor(SchemeColor.primary, false);
// BottomSheet
setBottomSheetBorderRadius(18, false);
setBottomSheetElevation(2, false);
setBottomSheetModalElevation(4, false);
// Card
setCardBorderRadius(14, false);
// Dialogs
setDialogBorderRadius(18, false);
// BottomNavigationBar
setBottomNavBarMuteUnselected(false, false);
// NavigationBar settings
setNavBarElevation(1, false);
setNavBarMuteUnselected(false, false);
setNavBarSelectedIconSchemeColor(SchemeColor.onPrimary, false);
setNavBarSelectedLabelSchemeColor(SchemeColor.primary, false);
setNavBarIndicatorSchemeColor(SchemeColor.primary, false);
setNavBarIndicatorOpacity(1.0, false);
// NavigationRail settings
setNavRailElevation(0, false);
setNavRailMuteUnselected(false, false);
setNavRailBackgroundSchemeColor(SchemeColor.surface);
setNavRailSelectedIconSchemeColor(SchemeColor.onPrimary, false);
setNavRailSelectedLabelSchemeColor(SchemeColor.primary, false);
setNavRailIndicatorSchemeColor(SchemeColor.primary, false);
setNavRailIndicatorOpacity(1.0, false);
}
// 8) Colorful Scaffold.
else if (settingsId == 8) {
// Legacy swap ON.
setSwapLegacyColors(true, false);
// Set blend modes and levels.
setSurfaceModeLight(FlexSurfaceMode.highScaffoldLowSurface, false);
setSurfaceModeDark(FlexSurfaceMode.highScaffoldLowSurface, false);
setBlendLevel(10, false);
setBlendLevelDark(15, false);
setBlendLightOnColors(true, false);
setBlendDarkOnColors(true, false);
setBlendOnLevel(20, false);
setBlendOnLevelDark(40, false);
// Seed generation - Turn it ON, use prim and tertiary light, prim dark.
setUseKeyColors(true, false);
setUseSecondary(false, false);
setUseTertiary(true, false);
setUsedFlexToneSetup(1, false); // M3 default.
setKeepPrimary(true, false);
setKeepTertiary(true, false);
setKeepDarkPrimary(true, true);
// Border widths
setThickBorderWidth(2, false);
// Effects: M2 Divider, interaction effects, tinted disable.
setUseM2StyleDividerInM3(true, false);
setInteractionEffects(true, false);
setTintedDisabledControls(true, false);
// Text theme blends: ON light, ON dark
setBlendLightTextTheme(true, false);
setBlendDarkTextTheme(true, false);
// AppBar settings
setAppBarStyleLight(FlexAppBarStyle.background, false);
setAppBarStyleDark(FlexAppBarStyle.background, false);
setAppBarScrolledUnderElevationLight(8, false);
setBottomAppBarElevationLight(1, false);
setBottomAppBarElevationDark(2, false);
// Elevated button
setElevatedButtonSchemeColor(SchemeColor.onPrimaryContainer, false);
setElevatedButtonSecondarySchemeColor(SchemeColor.primaryContainer, false);
// OutlinedButton settings
setOutlinedButtonOutlineSchemeColor(SchemeColor.primary, false);
// ToggleButtons settings
setToggleButtonsBorderSchemeColor(SchemeColor.primary, false);
// SegmentedButton settings
setSegmentedButtonSchemeColor(SchemeColor.primary, false);
setSegmentedButtonBorderSchemeColor(SchemeColor.primary, false);
// Set Chip
setChipBorderRadius(10, false);
// Set toggles colored
setUnselectedToggleIsColored(true, false);
// Slider Settings
setSliderValueTinted(true, false);
// Set TextField Settings via InputDecorator
setInputDecoratorSchemeColorLight(SchemeColor.primary, false);
setInputDecoratorSchemeColorDark(SchemeColor.primary, false);
setInputDecoratorBackgroundAlphaLight(15, false);
setInputDecoratorBackgroundAlphaDark(22, false);
setInputDecoratorPrefixIconSchemeColor(SchemeColor.primary, false);
setInputDecoratorBorderRadius(10, false);
// Menus and Popup
setPopupMenuBorderRadius(6, false);
setPopupMenuElevation(6, false);
setMenuRadius(6, false);
setMenuElevation(6, false);
setMenuBarRadius(0, false);
setMenuBarElevation(1, false);
// Drawer settings
setDrawerIndicatorSchemeColor(SchemeColor.primary, false);
setDrawerWidth(280, false);
// BottomNavigationBar
setBottomNavBarMuteUnselected(false, false);
// NavigationBar settings
setNavBarMuteUnselected(false, false);
setNavBarSelectedIconSchemeColor(SchemeColor.onPrimary, false);
setNavBarSelectedLabelSchemeColor(SchemeColor.primary, false);
setNavBarIndicatorSchemeColor(SchemeColor.primary, false);
setNavBarIndicatorOpacity(1.0, false);
setNavBarElevation(2, false);
setNavBarHeight(70, false);
// NavigationRail settings
setNavRailMuteUnselected(false, false);
setNavRailSelectedIconSchemeColor(SchemeColor.onPrimary, false);
setNavRailSelectedLabelSchemeColor(SchemeColor.primary, false);
setNavRailIndicatorSchemeColor(SchemeColor.primary, false);
setNavRailIndicatorOpacity(1.0, false);
}
// 9) Computed theme
else if (settingsId == 9) {
// Legacy swap
setSwapLegacyColors(false, false);
setUsedColors(7, false); // Use primary, secondary and Tertiary
// Set blend modes and levels.
setSurfaceModeLight(FlexSurfaceMode.highScaffoldLowSurface, false);
setSurfaceModeDark(FlexSurfaceMode.highScaffoldLowSurface, false);
setBlendLevel(4, false);
setBlendLevelDark(10, false);
setBlendLightOnColors(false, false);
setBlendDarkOnColors(true, false);
setBlendOnLevel(10, false);
setBlendOnLevelDark(20, false);
// Set computed dark theme
setUseToDarkMethod(true, false);
setToDarkSwapPrimaryAndContainer(false, false);
setDarkMethodLevel(40, false);
setUseM3ErrorColors(true, true);
// Effects: M2 Divider, interaction effects, tinted disable.
setUseM2StyleDividerInM3(true, false);
setInteractionEffects(true, false);
setTintedDisabledControls(true, false);
// Border widths
setThickBorderWidth(2, false);
// Effects: M2 Divider, interaction effects, tinted disable.
setUseM2StyleDividerInM3(true, false);
setInteractionEffects(true, false);
setTintedDisabledControls(true, false);
// Text theme blends: ON light, ON dark
setBlendLightTextTheme(true, false);
setBlendDarkTextTheme(true, false);
// AppBar settings
setAppBarStyleLight(FlexAppBarStyle.background, false);
setAppBarStyleDark(FlexAppBarStyle.background, false);
setAppBarScrolledUnderElevationLight(8, false);
setBottomAppBarElevationLight(1, false);
setBottomAppBarElevationDark(2, false);
// Elevated button
setElevatedButtonSchemeColor(SchemeColor.onPrimaryContainer, false);
setElevatedButtonSecondarySchemeColor(SchemeColor.primaryContainer, false);
// Set TextField Settings via InputDecorator
setInputDecoratorBorderRadius(8, false);
setInputDecoratorSchemeColorLight(SchemeColor.primary, false);
setInputDecoratorSchemeColorDark(SchemeColor.primary, false);
setInputDecoratorBackgroundAlphaLight(12, false);
setInputDecoratorBackgroundAlphaDark(48, false);
setInputDecoratorPrefixIconSchemeColor(SchemeColor.primary, false);
setInputDecoratorPrefixIconDarkSchemeColor(SchemeColor.primary, false);
setInputDecoratorUnfocusedHasBorder(false, false);
// Drawer settings
setDrawerWidth(290, false);
setDrawerElevation(1, false);
// BottomNavigationBar
setBottomNavBarMuteUnselected(false, false);
setBottomNavBarSelectedSchemeColor(SchemeColor.secondary, false);
// NavigationBar settings
setNavBarSelectedIconSchemeColor(SchemeColor.onSecondaryContainer, false);
setNavBarSelectedLabelSchemeColor(SchemeColor.onSecondaryContainer, false);
setNavBarIndicatorSchemeColor(SchemeColor.secondaryContainer, false);
setNavBarIndicatorOpacity(1.0, false);
setNavBarElevation(1, false);
setNavBarHeight(72, false);
// NavigationRail settings
setNavRailSelectedIconSchemeColor(SchemeColor.onSecondaryContainer, false);
setNavRailSelectedLabelSchemeColor(SchemeColor.onSecondaryContainer, false);
setNavRailIndicatorSchemeColor(SchemeColor.secondaryContainer, false);
setNavRailIndicatorOpacity(1.0, false);
}
// All settings have been modified, now notify listeners.
notifyListeners();
}