В настоящее время я слушаю поток веб-сокета в 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);
}
),
}
}