Как мы все знаем, у flutter есть пример использования websocket, но он просто получает ответ websocket в виде потока и что-то вроде этого:
new StreamBuilder(
stream: widget.channel.stream,
builder: (context, snapshot) {
return new Text(snapshot.hasData ? '${snapshot.data}' : '');
},
);
Мне нужна асинхронная функция, которая получаеткаждый ответ веб-сокета и добавьте результат в список, чтобы можно было обновить вид списка.
Как получить ответ веб-сокета в виде текста или json?
Обновление : Я знаю, что есть какой-то метод, подобный stream.listen сейчас:
widget.channel.stream.listen((data) {
print("!!!!new msg: $data");
var dataJson = json.decode(data);
print(dataJson["content"]);
// do something after received data
setState(() {
_allAnimateMessages.insert(0, newMsg);
});
newMsg.animationController.forward();
});
Это может работать на странице, но при повторном входе на эту страницу появляется сообщение об ошибке Bad state: Stream has already been listened to.
.Как сделать так, чтобы поток можно было прослушивать при каждом начале, а затем boradcast на многих страницах?