从飞镖中的 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...

但这种方式与直接使用元素的事件流得到的结果基本相同,如上所示。