stream<T> method
Get a stream on the preference changes
Implementation
Stream<T> stream<T>(String key) {
late StreamController<T> controller;
void emit() {
try {
final value = get<T>(key);
if (value != null) {
controller.add(value);
}
} catch (e) {
controller.addError(e);
}
}
void listen() {
emit();
addKeyListener(key, emit);
}
void done() {
removeKeyListener(key, emit);
}
controller = StreamController<T>(
onListen: listen,
onResume: listen,
onPause: done,
onCancel: () {
done();
controller.close();
},
);
return controller.stream;
}