错误:无法将类型为“ Future”的值分配给类型为“ SocketIO”的变量

时间:2019-09-20 15:57:49

标签: flutter dart socket.io

我正在尝试创建一个套接字io应用,并且正在使用adhara_socket_io。我将示例中的代码添加到了pub.dev站点上,但出现错误。这是代码:

SocketIOManager manager = SocketIOManager();
SocketIO socket = manager.createInstance('http://192.168.1.2:7000/');  // I get the error here
socket.onConnect((data){
  print("connected...");
  print(data);
  socket.emit("message", ["Hello world!"]);
});
socket.connect();

我遇到两个错误。第一个:

  

不能将类型为'Future'的值赋给变量   输入“ SocketIO”。尝试更改变量的类型,或强制转换   右侧类型为“ SocketIO”

第二个:

  

不能将参数类型'String'分配给参数类型   'SocketOptions'

我在做什么错,如何解决?

2 个答案:

答案 0 :(得分:0)

我敢打赌,这个人manager.createInstance返回一个Future,因此您应该在它前面放置一个wait,以等待将来得到解决。像这样:

SocketIO socket = await manager.createInstance('http://192.168.1.2:7000/');  

如果此代码位于函数内部,则应将此函数标记为异步

答案 1 :(得分:0)

   //i think like Javascript for using await just wrap your function with async keyword.
   fn() async{
       SocketIOManager manager = SocketIOManager();
       SocketIO socket = await manager.createInstance('http://192.168.1.2:7000/');  
       socket.onConnect((data){
         print("connected...");
         print(data);
         socket.emit("message", ["Hello world!"]);
       });
       socket.connect();
    }