我正在探索Dart的观察库中的ChangeNotifier类,以便在命令行应用程序中使用。但是,我有两个问题。
在每次更新记录时,会逐渐重复List<ChangeRecord>
个对象中报告的更改次数。见图:
ChangeRecord不允许仅检索新值。因此,我正在尝试使用MapChangeRecord。但是,我不知道如何使用它。
这是我的示例代码供参考:
import 'dart:io';
import 'dart:async';
import 'dart:convert';
import 'package:observe/observe.dart';
class Notifiable extends Object with ChangeNotifier {
String _input = '';
@reflectable get input => _input;
@reflectable set input(val) {
_input = notifyPropertyChange(#input, _input, val);
}
void change(String text) {
input = text;
this.changes.listen((List<ChangeRecord> record) => print(record.last));
}
}
void main() {
Notifiable notifiable = new Notifiable();
Stream stdinStream = stdin;
stdinStream
.transform(new Utf8Decoder())
.listen((e) => notifiable.change(e));
}
答案 0 :(得分:3)
每次执行此代码
stdinStream
.transform(new Utf8Decoder())
.listen((e) => notifiable.change(e));
您在notifiable.change(e)
如果你改变它
import 'dart:io';
import 'dart:async';
import 'dart:convert';
import 'package:observe/observe.dart';
class Notifiable extends Object with ChangeNotifier {
String _input = '';
@reflectable get input => _input;
@reflectable set input(val) {
_input = notifyPropertyChange(#input, _input, val);
}
Notifiable() {
this.changes.listen((List<ChangeRecord> record) => print(record.last));
}
void change(String text) {
input = text;
}
}
void main() {
Notifiable notifiable = new Notifiable();
Stream stdinStream = stdin;
stdinStream
.transform(new Utf8Decoder())
.listen((e) => notifiable.change(e));
}
它应该按预期工作