MethodChannelBtService constructor

MethodChannelBtService()

Implementation

MethodChannelBtService() {
  final events = _eventChannel.receiveBroadcastStream();
  _dataStream = events
      .where((e) => e is Map && e['event'] == 'data')
      .map<Uint8List>((e) {
        try {
          final data = e['data'];
          if (data is String) {
            return base64Decode(data);
          }
          return Uint8List(0);
        } catch (e) {
          // Return empty bytes on error to prevent crash
          return Uint8List(0);
        }
      })
      .asBroadcastStream();

  _stateStream = events
      .where((e) => e is Map && e['event'] == 'state')
      .map<String>((e) {
        try {
          final state = e['state'];
          return state?.toString() ?? 'unknown';
        } catch (e) {
          return 'error';
        }
      })
      .asBroadcastStream();

  _deviceStream = events
      .where((e) => e is Map && e['event'] == 'device')
      .map<Map<String, dynamic>>((e) {
        try {
          final device = e['device'];
          if (device is Map) {
            return Map<String, dynamic>.from(device);
          }
          return <String, dynamic>{};
        } catch (e) {
          // Return empty map on error to prevent crash
          return <String, dynamic>{};
        }
      })
      .asBroadcastStream();
}