我有一个DefaultTabController有两个选项卡的工作正常。在我的第二个选项卡上,我最近添加了一个stream controller用于在每次值发生变化时更新屏幕上的值,这也可以正常工作,但如果我要快速向左移动到第一个选项卡,然后返回到第二个选项卡,则会出现以下错误。
Stream has already been listened to.
我有一个处置功能,但由于没有导航到另一个页面,它不会触发,因此它创建了许多流,我不希望它这样做。
下面的所有代码都是针对流控制器的,如果我注释掉所有这些代码,应用程序可以正常工作,不会出现错误,而且我还发现,如果我只注释掉,stream: stream_controller.stream,我也不会收到错误。
StreamController<int> stream_controller = StreamController<int>();
Run Code Online (Sandbox Code Playgroud)
@override
void dispose(){
super.dispose();
stream_controller.close();
}
Run Code Online (Sandbox Code Playgroud)
StreamBuilder(
initialData: 0,
stream: stream_controller.stream,
builder: (context, snapshot) {
return Padding(
padding: const EdgeInsets.all(8.0),
child: Text(
'#${snapshot.data}',
),
);
})
Run Code Online (Sandbox Code Playgroud)
stream_controller.sink.add(rank);
Run Code Online (Sandbox Code Playgroud)