如何让flutter等待WebSocket响应

iszxjhcz  于 2022-11-11  发布在  Flutter
关注(0)|答案(1)|浏览(152)

我正在将我的项目与我的网站同步,我想做的第一件事就是让它ping服务器,以确保它可以连接。

var responses= [];

@override
Widget build(BuildContext context){
var ws = WebSocketChannel.connect(Uri.parse("[NAME]"));
ws.stream.listen((data))=>responses.add(data));
ws.sink.add("[CONNECT_PACKET]");
}

如果数据包正常返回,我希望网页正常显示。否则,我希望它显示“错误:我如何让程序等待数据包的到来呢?我发现了一些涉及FutureBuilder的答案,但我不知道如何让WebSocket在响应中添加Future,然后在数据包到来时更新它。(对Flutter来说还是相当新的)
谢谢你!

7y4bm7vi

7y4bm7vi1#

您可以使用StreamBuilder订阅流

return StreamBuilder<bool>(
  stream: ws.stream,
  initialData: false,
  builder:(BuildContext context, AsyncSnapshot<bool> snapshot) {
    final hasConnection = snapshot.hasData && snapshot.data!;
    if (hasConnection) {
      // return success widget
    } else {
      // return network error widget
    }
  },
);

相关问题