DatumPersistence class abstract
Abstract interface for persistent storage of Datum sync metadata and configuration.
This interface provides a unified way to store and retrieve sync-related data across different storage backends (Hive, SharedPreferences, SQLite, etc.). It supports both synchronous and asynchronous operations, as well as streaming for real-time updates.
Usage
By default, Datum uses an in-memory persistence layer. To use persistent storage, implement this interface and pass it to Datum.initialize:
// Custom implementation (e.g., Hive, SharedPreferences, SQLite)
class MyPersistence implements DatumPersistence {
// Implement all required methods...
}
await Datum.initialize(
config: DatumConfig(...),
connectivityChecker: MyConnectivityChecker(),
persistence: MyPersistence(), // Use custom persistence
registrations: [...],
);
Built-in Implementations
- InMemoryDatumPersistence: Default in-memory storage (data lost on restart)
- HiveDatumPersistence: Hive-based persistent storage (in example app)
Implementations should handle serialization/deserialization of complex objects and provide thread-safe operations where necessary.
- Implementers
Constructors
Properties
- hashCode → int
-
The hash code for this object.
no setterinherited
- isInitialized → bool
-
Checks if the persistence layer is ready for operations.
no setter
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
Methods
-
clearAllData(
) → Future< void> - Clears all stored data.
-
clearUserData(
String userId) → Future< void> - Clears all data for a specific user.
-
deleteConfig(
String key) → Future< void> - Deletes configuration data.
-
deleteData(
String key) → Future< void> - Deletes arbitrary data by key.
-
deleteSyncMetadata(
String userId) → Future< void> - Deletes sync metadata for a specific user.
-
dispose(
) → Future< void> - Closes the persistence layer and releases any resources.
-
getAllUserIds(
) → Future< Set< String> > - Gets all user IDs that have stored data.
-
getConfig(
String key) → Future - Retrieves configuration data.
-
getData(
String key) → Future - Retrieves arbitrary data by key.
-
getStorageStats(
) → Future< Map< String, dynamic> ?> - Gets storage statistics (optional implementation).
-
getSyncMetadata(
String userId) → Future< DatumSyncMetadata?> - Retrieves sync metadata for a specific user.
-
initialize(
) → Future< void> - Initializes the persistence layer.
-
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
saveConfig(
String key, dynamic value) → Future< void> - Stores configuration data.
-
saveData(
String key, dynamic value) → Future< void> - Stores arbitrary data with a key.
-
saveSyncMetadata(
String userId, DatumSyncMetadata metadata) → Future< void> - Stores sync metadata for a specific user.
-
toString(
) → String -
A string representation of this object.
inherited
-
watchConfig(
String key) → Stream - Returns a stream of configuration changes for a specific key.
-
watchData(
String key) → Stream - Returns a stream of data changes for a specific key.
-
watchSyncMetadata(
String userId) → Stream< DatumSyncMetadata?> - Returns a stream of sync metadata changes for a specific user.
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited