subscribe method
Implementation
@override
Future<void> subscribe(MeshManagerListener listener) async {
listeners.add(listener);
_eventChannel.receiveBroadcastStream().listen((dynamic event) {
for (var listener in listeners) {
final Map map = event;
var payload = map['payload'];
switch (map['type']) {
case 'data':
//TODO: assuming byte[]
listener.onDataReceivedForSelf?.call(MeshProtocol.fromMap(payload));
break;
case 'status':
listener.onStatusChange?.call(MeshStatus.fromMap(payload));
break;
case 'neighborConnected':
listener.onNeighborConnected?.call(Device.fromMap(payload));
break;
case 'neighborDisconnected':
listener.onNeighborDisconnected?.call(Device.fromMap(payload));
break;
case 'error':
listener.onError?.call(MeshError.fromMap(payload));
break;
default:
throw Exception("unknown event type:${map['type']} map:$map");
}
}
});
await _channel.invokeMethod('subscribe');
}