You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Liked some of my work? Buy me a coffee (or more likely a beer).
More detail about returned Stream
It's a single-subscription Stream (ie. it can only be listened once).
Stream will emit the value (nullable) or a TypeError as its first event when it is listen to.
It will automatically emit value when value associated with key was changed successfully
(emit null when value associated with key was removed or set to null).
When value read from Storage has a type other than expected type:
If value is null, the Stream will emit null (this occurred because null can be cast to any nullable type).
Otherwise, the Stream will emit a TypeError.
Can emit two consecutive data events that are equal. You should use Rx operator like distinct (More commonly known as distinctUntilChanged in other Rx implementations) to create an Stream where data events are skipped if they are equal to the previous data event.
Key changed: |----------K1---K2------K1----K1-----K2---------> time
|
Value stream: |-----@----@------------@-----@-----------------> time
| ^
| |
| Listen(key=K1)
|
| @: nullable value or TypeError
Usage
A simple usage example:
import'package:rx_storage/rx_storage.dart';
classStorageAdapterimplementsStorage<String, void> { ... }
main() async {
final adapter =StorageAdapter();
final rxStorage =RxStorage<String, void>(adapter);
rxStorage.observe('key', (v) => v asString?).listen((String? s) { ... });
await rxStorage.write('key', 'a String', (v) => v);
await rxStorage.read('key', (v) => v asString?);
}
Features and bugs
Please file feature requests and bugs at the issue tracker.
About
Reactive storage for Dart/Flutter. RxDart Storage for Dart/Flutter.