Upgrading shared_preferences 0.5 to 2
Breaking0.5.12+4 → 2.5.6Breaking3Security1Platform13Deprecated1New6Changed8Fixed10Other24
BreakingUpgrade verdict
3 breaking changes and 13 platform requirement changes and a security fix.
In plain terms
- The plugin no longer relies on an old Android helper class that Google deprecated, so it stays compatible with newer Android versions.
- You can no longer pass null to a setter to delete a saved value. Call remove(key) to delete it.
- The package now uses Dart's null safety feature, so code that uses it must also be null safe.
- You now need Flutter 3.41 or Dart 3.11 or newer to use this package.
Must act Top 5 of 18 that need code or config changes
Dart SDK requirement changed in 2.5.6: >=2.1.0 <3.0.0 → ^3.11.0.
Flutter requirement changed in 2.5.6: >=1.12.13+hotfix.5 <2.0.0 → >=3.41.0.
What you must change
Breaking3
Removes use of the deprecated Android AsyncTask class, which was deprecated in API level 30.
AsyncTaskSetters no longer accept null to mean removing values; use remove(key) instead.
set*()remove()Migrates the package to null safety.
Security1
Security update requires shared_preferences_android version 2.3.4.
shared_preferences_androidPlatform13
Updates minimum supported SDK version to Flutter 3.41/Dart 3.11.
Updates minimum supported SDK version to Flutter 3.35/Dart 3.9.
Updates minimum supported SDK version to Flutter 3.22/Dart 3.4.
Updates minimum supported SDK version to Flutter 3.16/Dart 3.2.
Updates minimum supported SDK version to Flutter 3.13/Dart 3.1.
Updates support matrix in README to indicate that iOS 11 is no longer supported.
Clients on Flutter versions that still support iOS 11 can keep using the package with iOS 11 but will not receive further iOS implementation updates.
Updates minimum supported SDK version to Flutter 3.10/Dart 3.0.
Updates minimum supported SDK version to Flutter 3.7/Dart 2.19.
Updates minimum supported SDK version to Flutter 3.3/Dart 2.18.
Updates minimum Flutter version to 3.0.
Updates the minimum Flutter version to 2.10.
Updates the minimum Flutter SDK to 2.5 and the iOS deployment target to 9.0.
Deprecations to plan for
Deprecated1
Deletes deprecated splash screen meta-data element.
API changes
Generated by DepDelta from published Dart source. Not mixed with prose notes.
- changed:
method SharedPreferences.get(String key): dynamic → method SharedPreferences.get(String key): Object? - changed:
method SharedPreferences.getBool(String key): bool → method SharedPreferences.getBool(String key): bool? - changed:
method SharedPreferences.getDouble(String key): double → method SharedPreferences.getDouble(String key): double? - changed:
method SharedPreferences.getInt(String key): int → method SharedPreferences.getInt(String key): int? - changed:
method SharedPreferences.getString(String key): String → method SharedPreferences.getString(String key): String? - changed:
method SharedPreferences.getStringList(String key): List<String> → method SharedPreferences.getStringList(String key): List<String>? - changed:
static method SharedPreferences.setMockInitialValues(Map<String, dynamic> values): void → static method SharedPreferences.setMockInitialValues(Map<String, Object> values): void - added:
class SharedPreferencesAsync - added:
class SharedPreferencesWithCache - added:
class SharedPreferencesWithCacheOptions - added:
ctor SharedPreferencesAsync({SharedPreferencesOptions options = …}) - added:
ctor SharedPreferencesWithCacheOptions({this.allowList}) - added:
field SharedPreferencesWithCacheOptions.allowList: final Set<String>? - added:
get SharedPreferencesWithCache.keys: Set<String> - added:
method SharedPreferencesAsync.clear({Set<String>? allowList}): Future<void> - added:
method SharedPreferencesAsync.containsKey(String key): Future<bool> - added:
method SharedPreferencesAsync.getAll({Set<String>? allowList}): Future<Map<String, Object?>> - added:
method SharedPreferencesAsync.getBool(String key): Future<bool?> - added:
method SharedPreferencesAsync.getDouble(String key): Future<double?> - added:
method SharedPreferencesAsync.getInt(String key): Future<int?> - added:
method SharedPreferencesAsync.getKeys({Set<String>? allowList}): Future<Set<String>> - added:
method SharedPreferencesAsync.getString(String key): Future<String?> - added:
method SharedPreferencesAsync.getStringList(String key): Future<List<String>?> - added:
method SharedPreferencesAsync.remove(String key): Future<void> - added:
method SharedPreferencesAsync.setBool(String key, bool value): Future<void> - added:
method SharedPreferencesAsync.setDouble(String key, double value): Future<void> - added:
method SharedPreferencesAsync.setInt(String key, int value): Future<void> - added:
method SharedPreferencesAsync.setString(String key, String value): Future<void> - added:
method SharedPreferencesAsync.setStringList(String key, List<String> value): Future<void> - added:
method SharedPreferencesWithCache.clear(): Future<void> - added:
method SharedPreferencesWithCache.containsKey(String key): bool - added:
method SharedPreferencesWithCache.get(String key): Object? - added:
method SharedPreferencesWithCache.getBool(String key): bool? - added:
method SharedPreferencesWithCache.getDouble(String key): double? - added:
method SharedPreferencesWithCache.getInt(String key): int? - added:
method SharedPreferencesWithCache.getString(String key): String? - added:
method SharedPreferencesWithCache.getStringList(String key): List<String>? - added:
method SharedPreferencesWithCache.reloadCache(): Future<void> - added:
method SharedPreferencesWithCache.remove(String key): Future<void> - added:
method SharedPreferencesWithCache.setBool(String key, bool value): Future<void> - added:
method SharedPreferencesWithCache.setDouble(String key, double value): Future<void> - added:
method SharedPreferencesWithCache.setInt(String key, int value): Future<void> - added:
method SharedPreferencesWithCache.setString(String key, String value): Future<void> - added:
method SharedPreferencesWithCache.setStringList(String key, List<String> value): Future<void> - added:
static method SharedPreferences.resetStatic(): void - added:
static method SharedPreferences.setPrefix(String prefix, {Set<String>? allowList}): void - added:
static method SharedPreferencesWithCache.create({ SharedPreferencesOptions sharedPreferencesOptions = …, required SharedPreferencesWithCacheOptions cacheOptions, Map<String, Object?>? cache, }): Future<SharedPreferencesWithCache>
- added:
function migrateLegacySharedPreferencesToSharedPreferencesAsyncIfNecessary({ required SharedPreferences legacySharedPreferencesInstance, required SharedPreferencesOptions sharedPreferencesAsyncOptions, required String migrationCompletedKey, }): Future<void>