handleContentEvent function
处理内容事件
直接转发到对应的专用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');
}
}