From ed3caa1e0147a57ca1f9326d17adda64bbc1c0ef Mon Sep 17 00:00:00 2001 From: stonegate Date: Mon, 3 Aug 2020 00:52:55 +0800 Subject: [PATCH] Language settings backup. --- lib/state/setting_state.dart | 21 ++++++++++++++++++++- lib/type/settings_backup.dart | 10 +++++++--- 2 files changed, 27 insertions(+), 4 deletions(-) diff --git a/lib/state/setting_state.dart b/lib/state/setting_state.dart index 985cb23..6151c7e 100644 --- a/lib/state/setting_state.dart +++ b/lib/state/setting_state.dart @@ -442,6 +442,9 @@ class SettingState extends ChangeNotifier { var rewindSeconds = await rewindSecondsStorage.getInt(defaultValue: 10); var playerHeight = await KeyValueStorage(playerHeightKey).getInt(defaultValue: 0); + var localeList = await localeStorage.getStringList(); + var backupLocale = + localeList.isEmpty ? '' : '${'${localeList.first}-'}${localeList[1]}'; return SettingsBackup( theme: theme, @@ -467,7 +470,8 @@ class SettingState extends ChangeNotifier { tapToOpenPopupMenu: tapToOpenPopupMenu, fastForwardSeconds: fastForwardSeconds, rewindSeconds: rewindSeconds, - playerHeight: playerHeight); + playerHeight: playerHeight, + locale: backupLocale); } Future restore(SettingsBackup backup) async { @@ -498,6 +502,21 @@ class SettingState extends ChangeNotifier { await KeyValueStorage(playerHeightKey).saveInt(backup.playerHeight); await KeyValueStorage(tapToOpenPopupMenuKey) .saveBool(backup.tapToOpenPopupMenu); + if (backup.locale == '') { + await localeStorage.saveStringList([]); + await S.load(Locale(Intl.systemLocale)); + } else { + var localeList = backup.locale.split('-'); + var backupLocale; + if (localeList[1] == 'null') { + backupLocale = Locale(localeList.first); + } else { + backupLocale = Locale(localeList.first, localeList[1]); + } + await localeStorage.saveStringList( + [backupLocale.languageCode, backupLocale.countryCode]); + await S.load(backupLocale); + } await initData(); await _getAutoUpdate(); await _getDownloadUsingData(); diff --git a/lib/type/settings_backup.dart b/lib/type/settings_backup.dart index 39b0cb0..f1e8355 100644 --- a/lib/type/settings_backup.dart +++ b/lib/type/settings_backup.dart @@ -23,6 +23,7 @@ class SettingsBackup { final int fastForwardSeconds; final int rewindSeconds; final int playerHeight; + final String locale; SettingsBackup( {this.theme, this.accentColor, @@ -47,7 +48,8 @@ class SettingsBackup { this.tapToOpenPopupMenu, this.fastForwardSeconds, this.rewindSeconds, - this.playerHeight}); + this.playerHeight, + this.locale}); Map toJson() { return { @@ -73,7 +75,8 @@ class SettingsBackup { 'tapToOpenPopupMenu': tapToOpenPopupMenu, 'fastForwardSeconds': fastForwardSeconds, 'rewindSeconds': rewindSeconds, - 'playerHeight': playerHeight + 'playerHeight': playerHeight, + 'locale': locale }; } @@ -102,6 +105,7 @@ class SettingsBackup { tapToOpenPopupMenu: json['tapToOpenPopupMenu'] as bool, fastForwardSeconds: json['fastForwardSeconds'] as int, rewindSeconds: json['rewindSeconds'] as int, - playerHeight: json['playerHeight'] as int); + playerHeight: json['playerHeight'] as int, + locale: json['locale'] as String); } }