handleContentEvent function

void handleContentEvent(
  1. Map<String, dynamic> data
)

处理内容事件

直接转发到对应的专用Listener (DramaPlayerListener, VideoListener等)

Implementation

void handleContentEvent(Map<String, dynamic> data) {
  try {
    // 原生端发送的是 'type' 字段
    final String eventType = data['type'] as String? ?? 'unknown';
    debugPrint('[ContentEvent] 📥 收到事件: $eventType');

    // 根据事件类型转发到对应的Listener
    switch (eventType) {
      // 短剧播放页事件 - 转发到DramaPlayerListener
      case 'drama_player_created':
      case 'drama_player_create_failed':
      case 'sdk_error':
      case 'drama_player_shown':
      case 'drama_player_hidden':
      case 'drama_player_destroyed':
      case 'drama_video_start_play':
      case 'drama_video_over_play':
      case 'drama_video_pause':
      case 'drama_video_continue':
      case 'drama_video_completion':
      case 'drama_video_seek':
      case 'drama_duration_change':
      case 'drama_video_progress':
      case 'drama_page_change':
      case 'drama_episode_change':
      case 'drama_close':
      case 'drama_switch':
      case 'drama_gallery_show':
      case 'drama_gallery_click':
      case 'drama_click_enter':
      case 'drama_next_will_play':
      case 'drama_next_playlet':
      case 'drama_unlock_start':
      case 'drama_unlock_end':
      case 'drama_show_custom_ad':
      case 'drama_reward_dialog_show':
      case 'drama_unlock_dialog_action':
      case 'drama_ad_request':
      case 'drama_ad_load_success':
      case 'drama_ad_load_fail':
      case 'drama_ad_fill_fail':
      case 'drama_ad_show':
      case 'drama_ad_click':
      case 'drama_ad_play_start':
      case 'drama_ad_play_pause':
      case 'drama_ad_play_continue':
      case 'drama_ad_play_finish':
      case 'drama_ad_play_complete':
      case 'drama_ad_reward_finish':
      case 'drama_ad_reward_skip':
      case 'drama_ad_buffer':
      case 'drama_request_start':
      case 'drama_request_fail':
      case 'drama_request_success':
        debugPrint('[ContentEvent] 🎮 转发到 DramaPlayerListener');
        _forwardToDramaPlayerListener(eventType, data);
        break;

      // Video事件 - 转发到VideoListener
      case 'video_created':
      case 'video_create_failed':
      case 'video_error':
      case 'video_close':
      case 'video_destroyed':
      case 'video_play':
      case 'video_pause':
      case 'video_continue':
      case 'video_completion':
      case 'video_over':
      case 'video_page_change':
      case 'video_seek':
      case 'video_request_start':
      case 'video_request_fail':
      case 'video_request_success':
      case 'video_refresh_complete':
      case 'video_ad_request':
      case 'video_ad_load_success':
      case 'video_ad_load_fail':
      case 'video_ad_fill_fail':
      case 'video_ad_show':
      case 'video_ad_click':
      case 'video_ad_play_start':
      case 'video_ad_play_pause':
      case 'video_ad_play_continue':
      case 'video_ad_play_complete':
      case 'video_click_author_avatar':
      case 'video_click_author_name':
      case 'video_click_comment':
      case 'video_click_like':
      case 'video_report_result':
        debugPrint('[ContentEvent] 🎬 转发到 VideoListener');
        _forwardToVideoListener(eventType, data);
        break;

      // GridVideo事件 - 转发到GridVideoListener
      case 'grid_video_created':
      case 'grid_video_error':
      case 'grid_video_destroyed':
      case 'grid_video_play':
      case 'grid_video_pause':
      case 'grid_video_continue':
      case 'grid_video_completion':
      case 'grid_video_over':
      case 'grid_video_item_click':
      case 'grid_video_item_show':
      case 'grid_video_click_author_avatar':
      case 'grid_video_click_author_name':
      case 'grid_video_click_comment':
      case 'grid_video_click_like':
      case 'grid_video_request_start':
      case 'grid_video_request_fail':
      case 'grid_video_request_success':
      case 'grid_video_refresh_complete':
        debugPrint('[ContentEvent] 📱 转发到 GridVideoListener');
        _forwardToGridVideoListener(eventType, data);
        break;

      // DramaCard事件 - 转发到DramaCardListener
      case 'card_created':
      case 'card_ready':
      case 'card_create_failed':
      case 'card_error':
      case 'card_data_loaded':
      case 'card_clicked':
      case 'card_playback_state_changed':
      case 'card_destroyed':
        debugPrint('[ContentEvent] 🎴 转发到 DramaCardListener');
        _forwardToCardListener(eventType, data);
        break;

      // DramaSwipeFlow事件 - 转发到DramaSwipeFlowListener
      case 'swipe_flow_created':
      case 'swipe_flow_ready':
      case 'swipe_flow_error':
      case 'swipe_flow_open_detail':
      case 'swipe_flow_destroyed':
        debugPrint('[ContentEvent] 🌊 转发到 DramaSwipeFlowListener');
        _forwardToSwipeFlowListener(eventType, data);
        break;

      // UserProfile事件 - 转发到UserProfileListener
      case 'user_profile_created':
      case 'user_profile_ready':
      case 'user_profile_error':
      case 'user_profile_destroyed':
        debugPrint('[ContentEvent] 👤 转发到 UserProfileListener');
        _forwardToUserProfileListener(eventType, data);
        break;

      // DramaHome事件 - 转发到DramaHomeListener
      case 'drama_home_created':
      case 'drama_home_ready':
      case 'drama_home_error':
      case 'drama_home_item_click':
      case 'drama_home_search':
      case 'drama_home_category_switch':
      case 'drama_home_destroyed':
        debugPrint('[ContentEvent] 🏠 转发到 DramaHomeListener');
        _forwardToDramaHomeListener(eventType, data);
        break;

      // StoryHome事件 - 转发到StoryHomeListener
      case 'story_home_created':
      case 'story_home_ready':
      case 'story_home_error':
      case 'story_home_item_click':
      case 'story_home_destroyed':
        debugPrint('[ContentEvent] 📚 转发到 StoryHomeListener');
        _forwardToStoryHomeListener(eventType, data);
        break;

      // StoryReader事件 - 转发到StoryReaderListener
      case 'story_reader_created':
      case 'story_reader_ready':
      case 'story_reader_error':
      case 'story_reader_chapter_changed':
      case 'story_reader_progress_changed':
      case 'story_reader_favorite_changed':
      case 'story_reader_middle_page_ad_show':
      case 'story_reader_middle_page_ad_click':
      case 'story_reader_middle_page_ad_close':
      case 'story_reader_middle_line_ad_show':
      case 'story_reader_middle_line_ad_click':
      case 'story_reader_banner_ad_show':
      case 'story_reader_banner_ad_click':
      case 'story_reader_destroyed':
        debugPrint('[ContentEvent] 📖 转发到 StoryReaderListener');
        _forwardToStoryReaderListener(eventType, data);
        break;

      default:
        debugPrint('[ContentEvent] ⚠️ 未处理的事件类型: $eventType');
        break;
    }
  } catch (e, stackTrace) {
    debugPrint('[ContentEvent] ❌ 处理事件失败: $e');
    debugPrint('[ContentEvent] 堆栈: $stackTrace');
  }
}