@@ -65,6 +65,7 @@ class AppBuilder {
6565
6666 static Future <void > init ({required String path}) async {
6767 final instance = getInstance ();
68+ await StorageUtil .init ();
6869 await instance._loadConfig (path: path);
6970 }
7071
@@ -136,23 +137,31 @@ class MessageListConfig {
136137 final String alignment;
137138 final List <String > messageActionList;
138139 final bool _jsonEnableReadReceipt;
140+ bool ? _cachedEnableReadReceipt;
139141
140142 MessageListConfig ({
141143 required this .alignment,
142144 required this .messageActionList,
143145 required bool jsonEnableReadReceipt,
144- }) : _jsonEnableReadReceipt = jsonEnableReadReceipt;
146+ }) : _jsonEnableReadReceipt = jsonEnableReadReceipt {
147+ // Load cached value asynchronously
148+ _loadEnableReadReceipt ();
149+ }
145150
146- bool get enableReadReceipt {
147- final value = StorageUtil .get (_enableReadReceiptKey);
148- if (value is bool ) {
149- return value;
150- }
151+ void _loadEnableReadReceipt () {
152+ StorageUtil .get (_enableReadReceiptKey).then ((value) {
153+ if (value is bool ) {
154+ _cachedEnableReadReceipt = value;
155+ }
156+ });
157+ }
151158
152- return _jsonEnableReadReceipt;
159+ bool get enableReadReceipt {
160+ return _cachedEnableReadReceipt ?? _jsonEnableReadReceipt;
153161 }
154162
155- Future <bool > setEnableReadReceipt (bool value) {
163+ Future <bool > setEnableReadReceipt (bool value) async {
164+ _cachedEnableReadReceipt = value;
156165 return StorageUtil .set (_enableReadReceiptKey, value);
157166 }
158167
@@ -285,20 +294,34 @@ class AvatarConfig {
285294
286295class TranslateConfig {
287296 static const String _translateTargetLanguageKey = 'atomic_translate_target_language' ;
297+ String ? _cachedTargetLanguage;
298+
299+ TranslateConfig () {
300+ // Load cached value asynchronously
301+ _loadTargetLanguage ();
302+ }
303+
304+ void _loadTargetLanguage () {
305+ StorageUtil .get (_translateTargetLanguageKey).then ((value) {
306+ if (value is String && value.isNotEmpty) {
307+ _cachedTargetLanguage = value;
308+ }
309+ });
310+ }
288311
289312 /// Get translate target language
290313 /// Returns saved language or device language as default
291314 String get targetLanguage {
292- final saved = StorageUtil .get (_translateTargetLanguageKey);
293- if (saved is String && saved.isNotEmpty) {
294- return saved;
315+ if (_cachedTargetLanguage != null && _cachedTargetLanguage! .isNotEmpty) {
316+ return _cachedTargetLanguage! ;
295317 }
296318 // Return device language as default
297319 return PlatformDispatcher .instance.locale.languageCode;
298320 }
299321
300322 /// Set translate target language
301- Future <bool > setTargetLanguage (String languageCode) {
323+ Future <bool > setTargetLanguage (String languageCode) async {
324+ _cachedTargetLanguage = languageCode;
302325 return StorageUtil .set (_translateTargetLanguageKey, languageCode);
303326 }
304327}
0 commit comments