PrfyJson<T> class

An isolate-safe preference object specialized for storing JSON-serializable objects.

This class provides type-safe access to complex objects stored in SharedPreferences by serializing them to JSON. Unlike PrfJson, it doesn't use in-memory caching, making it suitable for use across multiple isolates where cached values might become stale.

Example:

class Settings {
  final bool darkMode;
  final String locale;

  Settings({required this.darkMode, required this.locale});

  factory Settings.fromJson(Map<String, dynamic> json) => Settings(
    darkMode: json['darkMode'] ?? false,
    locale: json['locale'] ?? 'en_US',
  );

  Map<String, dynamic> toJson() => {
    'darkMode': darkMode,
    'locale': locale,
  };
}

final settingsPreference = PrfyJson<Settings>(
  'app_settings',
  fromJson: Settings.fromJson,
  toJson: (settings) => settings.toJson(),
  defaultValue: Settings(darkMode: false, locale: 'en_US'),
);

await settingsPreference.set(Settings(darkMode: true, locale: 'fr_FR'));
final settings = await settingsPreference.get(); // Always reads from disk
Inheritance
Available extensions

Constructors

PrfyJson.new(String key, {required T fromJson(Map<String, dynamic> json), required Map<String, dynamic> toJson(T object), T? defaultValue})
Creates a new isolate-safe JSON preference.

Properties

adapter PrfAdapter<T>
Gets the adapter used to convert between the object and its JSON representation.
no setteroverride
defaultValue → T?
Optional default value to use when no value exists for key.
finalinherited
hashCode int
The hash code for this object.
no setterinherited
key String
The key used to store this preference in SharedPreferences.
finalinherited
runtimeType Type
A representation of the runtime type of the object.
no setterinherited

Methods

existsOnPrefs() Future<bool>

Available on BasePrfObject<T>, provided by the PrfOperationExtensions extension

Checks if the key exists in the default PrfService instance.
get() Future<T?>

Available on BasePrfObject<T>, provided by the PrfOperationExtensions extension

Gets the value from the default PrfService instance.
getOrFallback(T fallback) Future<T>

Available on BasePrfObject<T>, provided by the PrfOperationExtensions extension

Gets the value or returns the provided fallback if the value is null.
getValue(SharedPreferencesAsync prefs) Future<T?>
Gets the value from SharedPreferences.
inherited
isNull() Future<bool>

Available on BasePrfObject<T>, provided by the PrfOperationExtensions extension

Checks if the value is null in the default PrfService instance.
isValueNull(SharedPreferencesAsync prefs) Future<bool>
Checks if the stored value is null.
inherited
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
remove() Future<void>

Available on BasePrfObject<T>, provided by the PrfOperationExtensions extension

Removes the value from the default PrfService instance.
removeValue(SharedPreferencesAsync prefs) Future<void>
Removes the value from SharedPreferences.
inherited
set(T value) Future<void>

Available on BasePrfObject<T>, provided by the PrfOperationExtensions extension

Sets the value using the default PrfService instance.
setValue(SharedPreferencesAsync prefs, T value) Future<void>
Stores value in SharedPreferences.
inherited
toString() String
A string representation of this object.
inherited

Operators

operator ==(Object other) bool
The equality operator.
inherited