setPlayerEventHandler method
设置EventHandler
Implementation
void setPlayerEventHandler(EzvizOnEvent event, EzvizOnError error) {
/// 释放之前的handler
removePlayerEventHandler();
_dataSubscription = _eventChannel.receiveBroadcastStream().listen((data) {
if (data is Map<String, dynamic> || data is String) {
var jsonData = data is String ? json.decode(data) : data;
ezvizLog("JSON => $jsonData");
var ezvizEvent = EzvizEvent.init(jsonData);
if (ezvizEvent != null) {
if (ezvizEvent.eventType == EzvizChannelEvents.playerStatusChange) {
try {
// Handle both cases: data as JSON string or as direct object
if (jsonData['data'] is String) {
var mapData = json.decode(jsonData['data']);
ezvizEvent.data = EzvizPlayerStatus.fromJson(mapData);
} else if (jsonData['data'] is Map) {
ezvizEvent.data = EzvizPlayerStatus.fromJson(jsonData['data']);
}
} catch (e) {
ezvizLog("Error parsing player status: $e");
// Create a default status if parsing fails
ezvizEvent.data = EzvizPlayerStatus(
status: 5,
message: "Parse error: $e",
);
}
}
event(ezvizEvent);
}
}
}, onError: error);
}