Dart 如何从事件处理程序中的获取对事件流的引用?

Dart 如何从事件处理程序中的获取对事件流的引用?,dart,dart-webui,web-component,Dart,Dart Webui,Web Component,我需要管理我的网页上许多web组件的全局状态。(例如,每个web组件都有一个“选择”按钮/功能,我跟踪组件以确保一次只选择一个组件。) 为了管理我的组件的全局状态,每个web组件向我的主web应用程序中的公共处理程序提供一个事件流。不幸的是,为了管理全局状态,我需要我的处理程序知道从哪个流/web组件调用它。我的处理程序如何获取此信息 以下是我的示例代码: /\u webComponents是每个组件的引用列表。 //getStream()从每个组件获取事件流。 //connections是来自

我需要管理我的网页上许多web组件的全局状态。(例如,每个web组件都有一个“选择”按钮/功能,我跟踪组件以确保一次只选择一个组件。)

为了管理我的组件的全局状态,每个web组件向我的主web应用程序中的公共处理程序提供一个事件流。不幸的是,为了管理全局状态,我需要我的处理程序知道从哪个流/web组件调用它。我的处理程序如何获取此信息

以下是我的示例代码:

/\u webComponents是每个组件的引用列表。
//getStream()从每个组件获取事件流。
//connections是来自所有my web组件的流的列表。
_webComponents.forEach((connection)=>connections.add(connection.getStream());
connections.forEach((流连接)=>connection.listen(eventHandler));
void事件处理程序(webComponentEvent){
//?如何找出事件来自哪个web组件??
//ToDo:使用事件和web组件信息管理web组件的全局状态。
}

如果我理解正确,您想知道处理程序中的发件人,对吗

有两种选择。第一个是将发送方作为数据的一部分发送:

class Dog{//为了简洁起见,删除了控制器和流初始化
Stream get on bark=>。。。;
空树皮(){
//当然,您可以使用类型化对象而不是映射
_添加({'sender':this'data':'woof'});
}
}
//附加到源
var dog=新的dog();
狗。吠叫。听((事件){
发送者=事件['sender'];
数据=事件[‘数据’];
...
});
另一个选项是在闭包中绑定发送方。这不需要您更改流的类型(因此您仍将使用
,而不是

sources.forEach((src)=>src.listen((data)=>handleEvent(src,data));
void handleEvent(连接发送器、字符串数据){
...
}

非常感谢!我喜欢第二种选择。它很有魅力。