Reactive storage for Dart/Flutter. RxDart Storage for Dart/Flutter.
Alternatives To Rx_storage
Project NameStarsDownloadsRepos Using ThisPackages Using ThisMost Recent CommitTotal ReleasesLatest ReleaseOpen IssuesLicenseLanguage
Rxdb19,005826818 hours ago312September 22, 20229apache-2.0TypeScript
A fast, offline-first, reactive database for JavaScript Applications https://rxdb.info/
Fish Redux7,242223a year ago27March 09, 2021160apache-2.0Dart
An assembled flutter application framework.
Mobx.dart2,25332475 days ago112September 20, 202264mitDart
MobX for the Dart language. Hassle-free, reactive state-management for your Dart and Flutter apps.
Drift1,90322194 days ago47October 31, 2021111mitDart
Drift is an easy to use, reactive, typesafe persistence library for Dart & Flutter.
4 years ago6Dart
Companion repository to the "Build reactive mobile apps in Flutter" talk
5 months ago
17 months ago31October 27, 202157otherDart
A Flutter widget to use Apache ECharts in a reactive way.
States_rebuilder4781123 months ago78June 13, 20229otherDart
a simple yet powerful state management technique for Flutter
Reactive_forms3531218 days ago96August 07, 202253mitDart
This is a model-driven approach to handling form inputs and validations, heavily inspired in Angular's Reactive Forms
2a year ago12April 12, 20215bsd-2-clauseDart
A reactive key-value store for Flutter projects. Like shared_preferences, but with Streams.
Alternatives To Rx_storage
Select To Compare

Alternative Project Comparisons

rx_storage alt text

Reactive storage for Dart/Flutter. RxDart Storage for Dart/Flutter.

Author: Petrus Nguyễn Thái Học

Pub Version Pub Version codecov Dart CI License: MIT Style

Note: rx_shared_preferences is an extension of this package.

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: |[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?);

Features and bugs

Please file feature requests and bugs at the issue tracker.

Popular Reactive Projects
Popular Flutter Projects
Popular Control Flow Categories
Related Searches

Get A Weekly Email With Trending Projects For These Categories
No Spam. Unsubscribe easily at any time.