You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中Socket连接建立后Socket id返回null的问题求助

Flutter中Socket.IO连接后_socket.id为null的解决方法

问题出在Socket.IO的连接是异步操作,你在initState中刚创建Socket实例就直接打印_socket.id,此时连接还未完成建立,所以id会返回null。

解决步骤:

  • 监听Socket的connect事件,在连接成功回调中获取并打印_socket.id,代码示例:
late IO.Socket _socket;

@override
void initState() {
  super.initState();

  _socket = IO.io('http://192.168.1.3:3001',
      IO.OptionBuilder().setTransports(['websocket']).build());

  // 监听连接成功事件,此时才能拿到有效id
  _socket.onConnect((_) {
    print('Socket连接成功');
    print(_socket.id); // 这里输出的id不再是null
  });

  // 可选:添加错误监听,方便排查连接失败问题
  _socket.onConnectError((error) {
    print('Socket连接失败: $error');
  });

  // 可选:监听断开连接事件
  _socket.onDisconnect((_) {
    print('Socket连接断开');
  });
}

额外注意点:

  • 确认后端Socket.IO服务已正常启动,且地址http://192.168.1.3:3001可访问
  • 检查socket_io_client Flutter包版本与后端Socket.IO服务版本是否兼容(比如后端用v4.x,客户端尽量匹配兼容版本)
  • 测试时确保Flutter设备(模拟器/真机)与后端服务器处于同一局域网内

内容的提问来源于stack exchange,提问作者Alex Wright

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 17:11:17