等待来自客户端websocket的响应

等待来自客户端websocket的响应,websocket,dart,Websocket,Dart,我有一个表单,我会通过Websocket发送数据 我希望在继续之前收到回复 @CustomTag('register-user-sign')) 类RegisterUserModule扩展了聚合关系{ @可观察字符串email=“”; @可观测字符串传递=”; RegisterUserModule.created():super.created(); 作废发送(){ WebSocket ws; var指数; 索引=新店('demo','infos'); index.open() 。然后(()=>w

我有一个表单,我会通过Websocket发送数据

我希望在继续之前收到回复

@CustomTag('register-user-sign'))
类RegisterUserModule扩展了聚合关系{
@可观察字符串email=“”;
@可观测字符串传递=”;
RegisterUserModule.created():super.created();
作废发送(){
WebSocket ws;
var指数;
索引=新店('demo','infos');
index.open()
。然后(()=>ws=index.getByKey('wsocket'))
.完成时(){
if(ws!=null&&ws.readyState==WebSocket.OPEN){
send({'email':email,'pass':pass});
//在这里等一下,回答是什么?
}
});
}
}

有可能吗?或者有其他解决方案?

WebSocket.send是非阻塞的,您应该使用onMessage方法处理流以接收响应

ws.send({'email':email,'pass':pass});
ws.onMessage.listen((e){
handleMessage(如数据);
});

我找到了另一个使用Completer类的解决方案

Completer\u Completer;
未来发送(地图数据){
_发送(JSON.encode(数据));
_完成符=新完成符();
返回_completer.future;
}
void_获取_数据(){
_listen((MessageEvent数据){
_completer.complete(data.data);
});
}