7

私の質問は: String や num のような単純な変数の変更を観察するにはどうすればよいですか? 次のようなオブジェクトを簡単に観察できることを知っています。

observe(t, (e) => print ("Value changed"));

しかし、単純な変数でこれを行う方法は?

4

2 に答える 2

7

(この回答は Polymer.dart に適用されます。)

observeパッケージには、単一の観測可能な値のラッパーが含まれています: ObservableBox.

import 'package:observe/observe.dart';
import 'dart:async';

void main() {
  ObservableBox myValue = new ObservableBox('hello');

  myValue.changes.listen((List<ChangeRecord> records) {
    PropertyChangeRecord record = records[0] as PropertyChangeRecord;

    print('${record.field} changed, it is now ${myValue.value}');
  });

  new Timer.periodic(const Duration(seconds: 1), (t) {
    myValue.value = new DateTime.now();
  });
}

ObservableBox を使用せずに、トップレベルまたは関数スコープの単一の文字列、boolean、int、または double を監視する方法はありません。

string、boolean、int、または double がクラスのフィールドである場合はObservableMixin@observable注釈を使用できます。

class Foo extends Object with ObservableMixin {
  @observable String bar = '';
}

Foo のインスタンスが変更されたときに通知を受け取ることができます。

foo.changes.listen((List<ChangeRecord> records) {
  // ...
});
于 2013-08-31T07:12:01.467 に答える