Flutter 如何在flatter中将流数据从一个类发送到另一个类
我正在编写一段代码,从一个类WebSocket.dart侦听WebSocket流,我想将数据或流对象本身传递给另一个类 websocket侦听器持续不断地接收数据,因此它是异步和连续的 我通过调用authorize函数开始监听Flutter 如何在flatter中将流数据从一个类发送到另一个类,flutter,asynchronous,websocket,flutter-web,Flutter,Asynchronous,Websocket,Flutter Web,我正在编写一段代码,从一个类WebSocket.dart侦听WebSocket流,我想将数据或流对象本身传递给另一个类 websocket侦听器持续不断地接收数据,因此它是异步和连续的 我通过调用authorize函数开始监听 Future<bool> authorize(String token) async { this._authorized = false; this._websocket.sink.add('{"topic":&quo
Future<bool> authorize(String token) async {
this._authorized = false;
this._websocket.sink.add('{"topic":"AUTHORIZE", "payload":"$token"}');
this._websocket.stream.listen(this.receiveMessage);
// wait 3s for connection
await Future.delayed(new Duration(seconds: 3));
if (this._authorized) return true;
return false;
}
receiveMessage(message) => this.parseMessage(json.decode(message));
parseMessage(Map message) {
var payload = message['payload'];
if (message.containsValue("AUTHORIZE_RESP")) {
int code = payload['code'];
// code ... 0 sucessful
// code ... 1 failed
if (code == 0)
this._authorized = true;
else
this._authorized = false;
} else if (message.containsValue("POSITIONS")) {
this._positionMsg += 1;
setRefresh(_deviceMsg, _positionMsg);
} else if (message.containsValue("DEVICES")) {
Position positionMessage = positionFromJson(message);
this._deviceMsg += 1;
setRefresh(_deviceMsg, _positionMsg);
}
}
未来授权(字符串令牌)异步{
此项。_authorized=false;
这个.u websocket.sink.add(“{”主题“:“授权”,“有效负载“$token”}”);
this.\u websocket.stream.listen(this.receiveMessage);
//等待3秒钟,等待连接
等待未来。延迟(新的持续时间(秒:3));
如果(经授权)返回true;
返回false;
}
receiveMessage(message)=>this.parseMessage(json.decode(message));
解析消息(映射消息){
var有效载荷=消息['payload'];
if(message.containsValue(“AUTHORIZE_RESP”)){
int code=有效载荷['code'];
//代码…0成功
//代码…1失败
如果(代码==0)
这是.\u authorized=true;
其他的
此项。_authorized=false;
}else if(message.containsValue(“POSITIONS”)){
这是._positionMsg+=1;
设置刷新(_deviceMsg,_positionMsg);
}else if(message.containsValue(“设备”)){
Position positionMessage=positionFromJson(消息);
这是._deviceMsg+=1;
设置刷新(_deviceMsg,_positionMsg);
}
}
我想传递位置对象或接收到的消息本身(如果更容易实现)。数据得到处理,直到最后才与widget有任何关系。
这可以通过状态管理解决:。很难给出答案,因为国家管理是一个大话题。