diff --git a/packages/shared_preferences/shared_preferences_ohos/lib/shared_preferences_ohos.dart b/packages/shared_preferences/shared_preferences_ohos/lib/shared_preferences_ohos.dart index 20010b248af81cf9e8a4dfe4a3776e66b33495ac..7cb24dad496ef6e993c57924bf90af563b98b1e5 100644 --- a/packages/shared_preferences/shared_preferences_ohos/lib/shared_preferences_ohos.dart +++ b/packages/shared_preferences/shared_preferences_ohos/lib/shared_preferences_ohos.dart @@ -37,6 +37,7 @@ class SharedPreferencesOhos extends SharedPreferencesStorePlatform { } static const String _defaultPrefix = 'flutter.'; + static const String _doublePrefix = "VGhpcyBpcyB0aGUgcHJlZml4IGZvciBhIGRvdWJsZS4"; @override Future remove(String key) async { @@ -47,13 +48,18 @@ class SharedPreferencesOhos extends SharedPreferencesStorePlatform { Future setValue(String valueType, String key, Object value) async { switch (valueType) { case 'String': + if((value as String).startsWith(_doublePrefix)) { + throw PlatformException( + code: 'InvalidOperation', + message: 'StorageError: This string cannot be stored as it clashes with special identifier prefixes'); + } return _api.setString(key, value as String); case 'Bool': return _api.setBool(key, value as bool); case 'Int': return _api.setInt(key, value as int); case 'Double': - return _api.setDouble(key, value as double); + return _api.setString(key, "$_doublePrefix$value"); case 'StringList': return _api.setStringList(key, value as List); } @@ -106,8 +112,14 @@ class SharedPreferencesOhos extends SharedPreferencesStorePlatform { Future> getAllWithParameters( GetAllParameters parameters) async { final PreferencesFilter filter = parameters.filter; - final Map data = + Map data = await _api.getAll(filter.prefix, filter.allowList?.toList()); + data = data.map((key, value) { + if(value is String && value.startsWith(_doublePrefix)) { + return MapEntry(key, double.tryParse(value.substring(_doublePrefix.length))); + } + return MapEntry(key, value); + }); return data.cast(); } }