setPlayerEventHandler method

void setPlayerEventHandler(
  1. EzvizOnEvent event,
  2. EzvizOnError error
)

设置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);
}