パッケージ、リポジトリ、アプリカテゴリを検索

パッケージ詳細v2.0.0

simple_observable

Future、Stream、および/またはコールバックを使用して値の変更を観察します。

AndroidiOSWebmacOSWindowsLinux
30日間ダウンロード
19.9万
いいね数
6
Pub ポイント
160

パッケージをインストール

flutter pub add simple_observable

パッケージ概要

公開情報に基づく選定ガイドです。参考としてご利用ください。

simple_observable は、Futures、Streams、またはコールバックを通じて値の変更を簡単に観察できる軽量なDartパッケージです。ボイラープレートコードなしでデータ更新に反応するための明確なインターフェースを提供することで、リアクティブプログラミングを簡素化します。Flutterアプリにおける状態管理に最適で、Android、iOS、Web、macOS、Windows、Linuxなど複数のプラットフォームをサポートしています。このパッケージは、非同期データフローの追跡における複雑さを減らすことで、開発者の生産性を向上させます。

用途

  • リアルタイムデータの更新
  • Flutter アプリにおける状態管理
  • イベント駆動型のUI更新
  • 非同期データストリームの処理
  • コールバック論理の簡略化

主な機能

  • Futures および Streams をサポートしています
  • コールバックベースの観察
  • 最小限のボイラープレート
  • クロスプラットフォーム互換性
  • 既存コードとの簡単な統合

適している対象

  • 簡単な状態更新を求める開発者
  • リアクティブUIを備えたFlutterアプリが必要です
  • 重い状態管理ソリューションを避けるプロジェクト
  • コードのシンプルさを最優先とするチーム
  • 軽量な観測性を必要とするアプリ

注意事項

  • 複雑な状態ツリーには適していません
  • 基本的な観察パターンに限定される
  • 組み込みの永続性または元に戻す機能がありません
  • 小規模から中規模のアプリケーションに最適
  • 購読の手動処理が必要

元の README

関連するソースリポジトリの README 原文のスナップショットです。最新の内容はリポジトリをご覧ください。

pub.dev

simple_observable

Observe value changes using a Future, Stream, and/or a callback.

Source

class Observable<T> {
  Observable({T initialValue, this.onChanged, this.checkEquality = true})
      : _value = initialValue;

  /// If true, setting the [value] will only notifiy if the new value is different
  /// than the current value.
  final bool checkEquality;
  final void Function(T value) onChanged;

  var _completer = Completer<T>();

  bool _canceled = false;
  bool get canceled => _canceled;

  T _value;

  /// The current value of this observable.
  T get value => _value;
  set value(T val) {
    if (!canceled && (!checkEquality || _value != val)) {
      _value = val;
      // Delaying notify() allows the Future and Stream to update correctly.
      Future.delayed(Duration(microseconds: 1), () => notify(val));
    }
  }

  /// Alias for [value] setter. Good for passing to a Future or Stream.
  void setValue(T val) => value = val;

  @protected
  @mustCallSuper
  void notify(T val) {
    if (onChanged != null) onChanged(val);
    // Completing with a microtask allows a new completer to be constructed
    // before listeners of [nextValue] are called, allowing them to listen to
    // nextValue again if desired.
    _completer.complete(Future.microtask(() => val));
    _completer = Completer<T>();
  }

  Future<T> get nextValue => _completer.future;
  Stream<T> get values async* {
    while (!canceled) {
      yield await nextValue;
    }
  }

  /// Permanently disables this observable. Further changes to [value] will be
  /// ignored, the outputs [onChanged], [nextValue], and [values] will not be
  /// called again.
  @mustCallSuper
  void cancel() => _canceled = true;
}

カテゴリー

依存関係

依存関係一覧 1 件

ソースリポジトリ

このパッケージを使用しているプロジェクト