Использование несколькими StreamBuilder одного и того же источника данных
Прямое подключение к websocket с помощью Streambuilder работает без проблем, но я попытался сделать поток частью провайдера, чтобы я мог получить доступ к данным потока в нескольких виджетах, не сталкиваясь с "Bad State: Stream has already been listened to".
Является ли это лучшим способом обработки многопотоковой передачи данных, если нет, то какие у меня есть варианты?
Websocket-сервер является частью Django
Код для провайдера указан ниже
late final WebSocketChannel _fpdSockets;
Map _webSocketMessages = {};
Map get webSocketMessages {
return _webSocketMessages;
}
WebSocketStreamProvider()
: _fpdSockets = IOWebSocketChannel.connect(
Uri.parse('ws://127.0.0.1:8000/ws/socket-server/'),
);
Stream<Map<String, dynamic>> get dataStream => _fpdSockets.stream
.asBroadcastStream()
.map<Map<String, dynamic>>((value) => (jsonDecode(value)));
void sendDataToServer(dataToServer) {
print("Sending Data");
_fpdSockets.sink.add(
jsonEncode(dataToServer),
);
}
void closeConnection() {
_fpdSockets.sink.close();
}
handleMessages(data) {
print(data);
_webSocketMessages = data;
// notifyListeners();
}
}