Как я могу прослушать поток, а затем передать его в Streambuilder? - PullRequest
1 голос
/ 16 июня 2020

В настоящее время я слушаю поток веб-сокета в Streambuilder. Когда я получаю данные, я изменяю данные в самом streambuilder и передаю их виджету. Но поскольку сборка вызывается несколько раз, одни и те же полученные данные обрабатываются несколько раз. Итак, я хочу выполнить обработку данных (выполняемую в ReceiveMessage (data)) вне Streambuilder. Чтобы избежать многократного срабатывания Streambuilder, я пытаюсь убрать обработку данных из виджета. Это правильный подход, как мне это сделать?

class _DrawingPageState extends State<DrawingPage> {
  void initState() {
    super.initState();
    channel = IOWebSocketChannel.connect(ipVal);
    _stream = channel.stream;
   }

@override
  Widget build(BuildContext context) {
    child: StreamBuilder(
                          stream: _stream,
                          builder: (context, snapshot) {
                            if(snapshot.hasData){
                              data = receivedMessage(data);
                              print("Received Message");
                              return Text(data);
                            }
                              else if(snapshot.hasError){
                                print(snapshot.error);
                              }
                            return Text(data);
                          }
                        ),
  }
}
...