Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 如何在flatter中将流数据从一个类发送到另一个类_Flutter_Asynchronous_Websocket_Flutter Web - Fatal编程技术网

Flutter 如何在flatter中将流数据从一个类发送到另一个类

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

我正在编写一段代码,从一个类WebSocket.dart侦听WebSocket流,我想将数据或流对象本身传递给另一个类

websocket侦听器持续不断地接收数据,因此它是异步和连续的

我通过调用authorize函数开始监听

  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有任何关系。

这可以通过状态管理解决:。很难给出答案,因为国家管理是一个大话题。