getConnectionStatusStream method

  1. @override
Stream<ESPConnectionStatus> getConnectionStatusStream(
  1. String deviceId
)
override

Get device connection status stream

Implementation

@override
Stream<ESPConnectionStatus> getConnectionStatusStream(String deviceId) {
  if (!_connectionControllers.containsKey(deviceId)) {
    _connectionControllers[deviceId] =
        StreamController<ESPConnectionStatus>.broadcast();

    connectionEventChannel
        .receiveBroadcastStream(deviceId)
        .listen(
          (event) {
            if (event is String) {
              final status = ESPConnectionStatus.values.firstWhere(
                (e) => e.name == event,
                orElse: () => ESPConnectionStatus.disconnected,
              );
              _connectionControllers[deviceId]?.add(status);
            }
          },
          onError: (error) {
            _connectionControllers[deviceId]?.addError(error);
          },
        );
  }

  return _connectionControllers[deviceId]!.stream;
}