Project Name | Stars | Downloads | Repos Using This | Packages Using This | Most Recent Commit | Total Releases | Latest Release | Open Issues | License | Language |
---|---|---|---|---|---|---|---|---|---|---|
Rxdb | 19,005 | 82 | 68 | 18 hours ago | 312 | September 22, 2022 | 9 | apache-2.0 | TypeScript | |
A fast, offline-first, reactive database for JavaScript Applications https://rxdb.info/ | ||||||||||
Fish Redux | 7,242 | 22 | 3 | a year ago | 27 | March 09, 2021 | 160 | apache-2.0 | Dart | |
An assembled flutter application framework. | ||||||||||
Mobx.dart | 2,253 | 32 | 47 | 5 days ago | 112 | September 20, 2022 | 64 | mit | Dart | |
MobX for the Dart language. Hassle-free, reactive state-management for your Dart and Flutter apps. | ||||||||||
Drift | 1,903 | 22 | 19 | 4 days ago | 47 | October 31, 2021 | 111 | mit | Dart | |
Drift is an easy to use, reactive, typesafe persistence library for Dart & Flutter. | ||||||||||
State_experiments | 876 | 4 years ago | 6 | Dart | ||||||
Companion repository to the "Build reactive mobile apps in Flutter" talk | ||||||||||
Bookskeeper | 752 | 5 months ago | ||||||||
对各类图书资源的收集。大量计算机、AI方面书籍。 | ||||||||||
Flutter_echarts | 595 | 1 | 7 months ago | 31 | October 27, 2021 | 57 | other | Dart | ||
A Flutter widget to use Apache ECharts in a reactive way. | ||||||||||
States_rebuilder | 478 | 11 | 2 | 3 months ago | 78 | June 13, 2022 | 9 | other | Dart | |
a simple yet powerful state management technique for Flutter | ||||||||||
Reactive_forms | 353 | 12 | 18 days ago | 96 | August 07, 2022 | 53 | mit | Dart | ||
This is a model-driven approach to handling form inputs and validations, heavily inspired in Angular's Reactive Forms | ||||||||||
Streaming_shared_preferences | 233 | 2 | a year ago | 12 | April 12, 2021 | 5 | bsd-2-clause | Dart | ||
A reactive key-value store for Flutter projects. Like shared_preferences, but with Streams. |
Reactive storage for Dart/Flutter. RxDart Storage for Dart/Flutter.
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:
null
, the Stream
will emit null
(this occurred because null
can be cast to any nullable type).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: |[email protected]@[email protected]@-----------------> time
| ^
| |
| Listen(key=K1)
|
| @: nullable value or TypeError
A simple usage example:
import 'package:rx_storage/rx_storage.dart';
class StorageAdapter implements Storage<String, void> { ... }
main() async {
final adapter = StorageAdapter();
final rxStorage = RxStorage<String, void>(adapter);
rxStorage.observe('key', (v) => v as String?).listen((String? s) { ... });
await rxStorage.write('key', 'a String', (v) => v);
await rxStorage.read('key', (v) => v as String?);
}
Please file feature requests and bugs at the issue tracker.