saveChanges method
Persist all draft values to storage and make them the new saved baseline.
Implementation
Future<void> saveChanges() async {
if (!hasUnsavedChanges.value || isSaving.value) return;
isSaving.value = true;
try {
// Persist through FontSizeController
fontSizeController.changeFontSize(draftFontSize.value);
fontSizeController.changeFontFamily(draftFontFamily.value);
fontSizeController.changeAccentColor(draftAccentColor.value);
fontSizeController.changeThemeMode(draftThemeMode.value);
fontSizeController.changePushNotifications(draftPushNotifications.value);
fontSizeController.changeBorderRadius(draftBorderRadius.value);
fontSizeController.changeLayoutDensity(draftLayoutDensity.value);
fontSizeController.changeSidebarColor(draftSidebarColor.value);
fontSizeController.changeSidebarWidth(draftSidebarWidth.value);
fontSizeController.changeCardElevation(draftCardElevation.value);
fontSizeController.changeAnimationsEnabled(draftAnimationsEnabled.value);
fontSizeController.changeUiScale(draftUiScale.value);
fontSizeController.changeGridSize(draftGridSize.value);
fontSizeController.changeTableRowHeight(draftTableRowHeight.value);
fontSizeController.changeInputStyle(draftInputStyle.value);
fontSizeController.changeButtonStyle(draftButtonStyle.value);
fontSizeController.changeNavigationStyle(draftNavigationStyle.value);
fontSizeController.changeAppBarStyle(draftAppBarStyle.value);
fontSizeController.changeContentWidth(draftContentWidth.value);
fontSizeController.changeShadowsEnabled(draftShadowsEnabled.value);
fontSizeController.changeUiStyle(draftUiStyle.value);
fontSizeController.changeSidebarActiveColor(draftSidebarActiveColor.value);
fontSizeController.changeSidebarHoverColor(draftSidebarHoverColor.value);
fontSizeController.changeSidebarIconSize(draftSidebarIconSize.value);
fontSizeController.changeSidebarTransparency(draftSidebarTransparency.value);
fontSizeController.changeSidebarPosition(draftSidebarPosition.value);
fontSizeController.changeCustomAccentColor(draftCustomAccentColorHex.value);
fontSizeController.changeCustomSidebarColor(draftCustomSidebarColorHex.value);
fontSizeController.changeCustomSidebarTextColor(draftCustomSidebarTextColorHex.value);
fontSizeController.changeAppBarHeight(draftAppBarHeight.value);
fontSizeController.changeAppBarShadow(draftAppBarShadow.value);
fontSizeController.changeAppBarTitleAlignment(draftAppBarTitleAlignment.value);
fontSizeController.changeDataGridTemplate(draftDataGridTemplate.value);
fontSizeController.changeActionButtonShape(draftActionButtonShape.value);
fontSizeController.changeActionButtonStyle(draftActionButtonStyle.value);
fontSizeController.changeActionButtonColor(draftActionButtonColor.value);
fontSizeController.changePageTransition(draftPageTransition.value);
fontSizeController.changeFontLetterSpacing(draftFontLetterSpacing.value);
fontSizeController.changeFontLineHeight(draftFontLineHeight.value);
await storageUtils.setValue(AppConstants.loaderTypeKey, draftLoaderType.value.name);
await storageUtils.setValue(AppConstants.loaderColorKey, draftLoaderColor.value.name);
await storageUtils.setValue(AppConstants.customLoaderColorKey, draftCustomLoaderColorHex.value);
await storageUtils.setToastStyle(draftToastStyle.value.name);
fontSizeController.fontSize.refresh();
fontSizeController.fontFamily.refresh();
fontSizeController.accentColor.refresh();
fontSizeController.themeMode.refresh();
fontSizeController.pushNotifications.refresh();
fontSizeController.borderRadius.refresh();
fontSizeController.layoutDensity.refresh();
fontSizeController.sidebarColor.refresh();
fontSizeController.sidebarWidth.refresh();
fontSizeController.cardElevation.refresh();
fontSizeController.animationsEnabled.refresh();
fontSizeController.uiScale.refresh();
fontSizeController.gridSize.refresh();
fontSizeController.tableRowHeight.refresh();
fontSizeController.inputStyle.refresh();
fontSizeController.buttonStyle.refresh();
fontSizeController.navigationStyle.refresh();
fontSizeController.appBarStyle.refresh();
fontSizeController.contentWidth.refresh();
fontSizeController.shadowsEnabled.refresh();
fontSizeController.uiStyle.refresh();
fontSizeController.sidebarActiveColor.refresh();
fontSizeController.sidebarHoverColor.refresh();
fontSizeController.sidebarIconSize.refresh();
fontSizeController.sidebarTransparency.refresh();
fontSizeController.sidebarPosition.refresh();
fontSizeController.customAccentColorHex.refresh();
fontSizeController.customSidebarColorHex.refresh();
fontSizeController.customSidebarTextColorHex.refresh();
fontSizeController.appBarHeight.refresh();
fontSizeController.appBarShadow.refresh();
fontSizeController.appBarTitleAlignment.refresh();
fontSizeController.dataGridTemplate.refresh();
fontSizeController.actionButtonShape.refresh();
fontSizeController.actionButtonStyle.refresh();
fontSizeController.actionButtonColor.refresh();
fontSizeController.pageTransition.refresh();
fontSizeController.fontLetterSpacing.refresh();
fontSizeController.fontLineHeight.refresh();
// Apply theme mode
_applyThemeMode(draftThemeMode.value);
// Promote drafts to saved baseline
_savedFontSize = draftFontSize.value;
_savedFontFamily = draftFontFamily.value;
_savedAccentColor = draftAccentColor.value;
_savedThemeMode = draftThemeMode.value;
_savedPushNotifications = draftPushNotifications.value;
_savedBorderRadius = draftBorderRadius.value;
_savedLayoutDensity = draftLayoutDensity.value;
_savedSidebarColor = draftSidebarColor.value;
_savedSidebarWidth = draftSidebarWidth.value;
_savedCardElevation = draftCardElevation.value;
_savedAnimationsEnabled = draftAnimationsEnabled.value;
_savedUiScale = draftUiScale.value;
_savedGridSize = draftGridSize.value;
_savedTableRowHeight = draftTableRowHeight.value;
_savedInputStyle = draftInputStyle.value;
_savedButtonStyle = draftButtonStyle.value;
_savedNavStyle = draftNavigationStyle.value;
_savedAppBarStyle = draftAppBarStyle.value;
_savedContentWidth = draftContentWidth.value;
_savedShadowsEnabled = draftShadowsEnabled.value;
_savedUiStyle = draftUiStyle.value;
_savedSidebarActiveColor = draftSidebarActiveColor.value;
_savedSidebarHoverColor = draftSidebarHoverColor.value;
_savedSidebarIconSize = draftSidebarIconSize.value;
_savedSidebarTransparency = draftSidebarTransparency.value;
_savedSidebarPosition = draftSidebarPosition.value;
_savedCustomAccentColor = draftCustomAccentColorHex.value;
_savedCustomSidebarColor = draftCustomSidebarColorHex.value;
_savedCustomSidebarTextColor = draftCustomSidebarTextColorHex.value;
_savedAppBarHeight = draftAppBarHeight.value;
_savedAppBarShadow = draftAppBarShadow.value;
_savedAppBarTitleAlignment = draftAppBarTitleAlignment.value;
_savedDataGridTemplate = draftDataGridTemplate.value;
_savedActionButtonShape = draftActionButtonShape.value;
_savedActionButtonStyle = draftActionButtonStyle.value;
_savedActionButtonColor = draftActionButtonColor.value;
_savedPageTransition = draftPageTransition.value;
_savedFontLetterSpacing = draftFontLetterSpacing.value;
_savedFontLineHeight = draftFontLineHeight.value;
_savedLoaderType = draftLoaderType.value;
_savedLoaderColor = draftLoaderColor.value;
_savedCustomLoaderColor = draftCustomLoaderColorHex.value;
_savedToastStyle = draftToastStyle.value;
hasUnsavedChanges.value = false;
_showSaveSuccess();
} finally {
isSaving.value = false;
}
}