如何配置订阅?
How to dispose subscription?
如果我的 class 不在 StatefulWidge 中,我该如何处理订阅?有什么方法吗?
class EventNotifier extends ValueNotifier<List<String>> {
EventNotifier(List<String> value) : super(value);
final List<String> events = ['add', 'delete', 'edit'];
final stream = Stream.periodic(const Duration(seconds: 5));
late final streamSub = stream.listen(
(event) {
value.add(
events[Random().nextInt(3)],
);
notifyListeners();
},
);
}
我认为在这种情况下没有必要,因为当实例被释放时,流和订阅都将被 GC 释放。
然而,ValueNotifier
确实有一个 dispose method。您可以覆盖它,并在需要时从那里取消您的直播:
class EventNotifier extends ValueNotifier<List<String>> {
// Omitted
@override
void dispose() {
streamSub.cancel();
super.dispose();
}
}
如果我的 class 不在 StatefulWidge 中,我该如何处理订阅?有什么方法吗?
class EventNotifier extends ValueNotifier<List<String>> {
EventNotifier(List<String> value) : super(value);
final List<String> events = ['add', 'delete', 'edit'];
final stream = Stream.periodic(const Duration(seconds: 5));
late final streamSub = stream.listen(
(event) {
value.add(
events[Random().nextInt(3)],
);
notifyListeners();
},
);
}
我认为在这种情况下没有必要,因为当实例被释放时,流和订阅都将被 GC 释放。
然而,ValueNotifier
确实有一个 dispose method。您可以覆盖它,并在需要时从那里取消您的直播:
class EventNotifier extends ValueNotifier<List<String>> {
// Omitted
@override
void dispose() {
streamSub.cancel();
super.dispose();
}
}