我有一种情况,我期望 a 有一个值Stream
,但是因为它是由浏览器提供的,所以我不能仅仅依靠调用streamSub.single
. 目前,我正在创建一个显式的StreamController
,以便我可以轻松地Future
从中生成一个,同时保证它只会得到一个响应。然而,这最终比我预期的要设置的开销要多得多,这让我觉得我错过了一些东西。当前代码如下:
StreamController<String> streamCtrlr = new StreamController<String>();
var popup = window.open(targetUrl, "Auth Window");
//The popup above will call window.opener.postMessage, so listen for messages
StreamSubscription sub = window.onMessage.listen(null);
sub.onData((Event){
/* Logic goes here */
sub.cancel();
popup.close();
streamCtrlr.add(Event.data);
streamCtrlr.close();
});
return streamCtrlr.stream.single;
如何重新编写,以便StreamController
不需要中介?