gpt4 book ai didi

websocket - Flutter 如何监听 websocket 响应?

转载 作者:IT王子 更新时间:2023-10-29 06:34:45 27 4
gpt4 key购买 nike

众所周知,flutter 有一个使用 websocket 的例子,但它只是接收 websocket 响应作为流,并且只是这样的:

new StreamBuilder(
stream: widget.channel.stream,
builder: (context, snapshot) {
return new Text(snapshot.hasData ? '${snapshot.data}' : '');
},
);

我想要的是一个异步函数,它接收每个 websocket 响应并将结果附加到列表中,以便可以更新 ListView 。

无论如何如何获取文本或 json 形式的 websocket 响应?

更新:我知道现在有一些像 stream.listen 这样的方法:

widget.channel.stream.listen((data) {
print("!!!!new msg: $data");
var dataJson = json.decode(data);
print(dataJson["content"]);
// do something after received data
setState(() {
_allAnimateMessages.insert(0, newMsg);
});
newMsg.animationController.forward();
});

这可以在一个页面中工作,但是当再次进入该页面时,会出现一个错误,提示 Bad state: Stream has already been listened to.。如何做到每次开播都可以收听,然后广播到很多页面?

最佳答案

确保在离开当前小部件时关闭 WebSocket 连接。在小部件的 State 类中,您应该有一个 dispose() 方法,如下所示:

@override
void dispose() {
widget.channel.sink.close();
super.dispose();
}

关于websocket - Flutter 如何监听 websocket 响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50479452/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com