Skip to content

Commit eea90fb

Browse files
author
liuboping
committed
Add SharedPreferences support to AppConfigService
- Added _initialized flag to ensure config loads only once on startup - Implemented _loadFromPrefs() to load terminal and defaultTerminal settings - Parses JSON from SharedPreferences and falls back to defaults on error
1 parent 70e9680 commit eea90fb

1 file changed

Lines changed: 20 additions & 0 deletions

File tree

lib/domain/services/app_config_service.dart

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,13 +34,18 @@ class AppConfig {
3434

3535
class AppConfigService with ChangeNotifier {
3636
static AppConfigService? _instance;
37+
static bool _initialized = false;
3738
TerminalConfig _terminal = TerminalConfig.defaultConfig;
3839
DefaultTerminalConfig _defaultTerminal = DefaultTerminalConfig.defaultConfig;
3940

4041
AppConfigService._internal();
4142

4243
factory AppConfigService.getInstance() {
4344
_instance ??= AppConfigService._internal();
45+
if (!_initialized) {
46+
_loadFromPrefs();
47+
_initialized = true;
48+
}
4449
return _instance!;
4550
}
4651

@@ -59,6 +64,21 @@ class AppConfigService with ChangeNotifier {
5964
notifyListeners();
6065
}
6166

67+
static Future<void> _loadFromPrefs() async {
68+
final prefs = await SharedPreferences.getInstance();
69+
final configJson = prefs.getString(AppConstants.appConfigKey);
70+
if (configJson != null) {
71+
try {
72+
final json = jsonDecode(configJson) as Map<String, dynamic>;
73+
final config = AppConfig.fromJson(json);
74+
_instance!._terminal = config.terminal;
75+
_instance!._defaultTerminal = config.defaultTerminal;
76+
} catch (e) {
77+
// Use defaults if parsing fails
78+
}
79+
}
80+
}
81+
6282
Future<void> _saveToPrefs() async {
6383
final prefs = await SharedPreferences.getInstance();
6484
final config = AppConfig(

0 commit comments

Comments
 (0)