从飞镖中的 on-* 属性获取 StreamSubscription
Get a StreamSubscription from an on-* attribute in dart
在我的自定义元素中,我有一些元素具有 'on-input' 属性。他们都调用相同的函数。因此,在输入元素的每次更改时,都会调用该函数。但我想从第一个事件中获取 StreamSubscription,暂停它并在函数完成后再次启动它。
那么有没有办法从 'on-*' 属性获取 StreamSubscription?
从 Dart 代码设置 onInput 事件不是一个选项。
如果您命令式地添加事件侦听器,它就是您所得到的。
$['my-input'].onXxx.listen...
或
$['my-input'].on['Xxx'].listen...
刚读完你的最后一句话。为什么它不是一个选择?
您可以创建自己的 StreamController 并在声明分配的事件处理程序中添加事件。
StreamController<Event> _inputController = new StreamController<Event>();
Stream<Event> get onInput => _inputController.stream;
void inputHandler(Event e) {
_inputController.add(e);
}
如果需要,您可以onInput
制作广播流
Stream<Event> _inputStream = _exitController.stream.asBroadcastStream();
...
// subscribe to the event
onInput.listen...
但这种方式与直接使用元素的事件流得到的结果基本相同,如上所示。
在我的自定义元素中,我有一些元素具有 'on-input' 属性。他们都调用相同的函数。因此,在输入元素的每次更改时,都会调用该函数。但我想从第一个事件中获取 StreamSubscription,暂停它并在函数完成后再次启动它。
那么有没有办法从 'on-*' 属性获取 StreamSubscription?
从 Dart 代码设置 onInput 事件不是一个选项。
如果您命令式地添加事件侦听器,它就是您所得到的。
$['my-input'].onXxx.listen...
或
$['my-input'].on['Xxx'].listen...
刚读完你的最后一句话。为什么它不是一个选择?
您可以创建自己的 StreamController 并在声明分配的事件处理程序中添加事件。
StreamController<Event> _inputController = new StreamController<Event>();
Stream<Event> get onInput => _inputController.stream;
void inputHandler(Event e) {
_inputController.add(e);
}
如果需要,您可以onInput
制作广播流
Stream<Event> _inputStream = _exitController.stream.asBroadcastStream();
...
// subscribe to the event
onInput.listen...
但这种方式与直接使用元素的事件流得到的结果基本相同,如上所示。