Flutter youtube_player_iframe全屏按钮失效及相关问题求助
解决youtube_player_iframe: ^4.0.1的全屏及视频标题问题
一、实现视频全屏播放(解决点击无响应、横屏报错)
配置页面方向权限
在AndroidManifest.xml对应Activity中添加属性,避免横屏时页面重建导致视频中断:android:configChanges="orientation|screenSize|smallestScreenSize|keyboardHidden" android:screenOrientation="fullSensor"初始化播放器时开启必要配置
确保启用JavaScript并显示全屏按钮,这是全屏功能生效的基础:final controller = YoutubePlayerController( initialVideoId: '你的视频ID', params: const YoutubePlayerParams( autoPlay: false, showFullscreenButton: true, enableJavaScript: true, ), );监听全屏状态并优化布局
配合系统UI控制和布局组件,处理全屏前后的页面状态:YoutubePlayer( controller: controller, onEnterFullscreen: () { SystemChrome.setEnabledSystemUIMode(SystemUiMode.immersive); }, onExitFullscreen: () { SystemChrome.setEnabledSystemUIMode(SystemUiMode.edgeToEdge); }, )另外,
updateAcquireFence: Did not find frame错误多由WebView渲染与布局冲突导致,需确保播放器父布局无嵌套过深或约束冲突问题,同时Android端minSdkVersion不低于21。
二、获取视频链接对应的标题
youtube_player_iframe没有内置标题获取能力,需通过YouTube Data API实现:
添加网络请求依赖
在pubspec.yaml中引入http包:dependencies: http: ^1.1.0调用API获取标题
替换你的API_KEY和目标视频ID,发起请求解析标题:import 'package:http/http.dart' as http; import 'dart:convert'; Future<String?> getVideoTitle(String videoId) async { final apiKey = '你的API_KEY'; // 需在Google Cloud控制台创建并启用YouTube Data API v3 final url = Uri.parse( 'https://www.googleapis.com/youtube/v3/videos?id=$videoId&key=$apiKey&part=snippet'); final response = await http.get(url); if (response.statusCode == 200) { final data = jsonDecode(response.body); if (data['items']?.isNotEmpty == true) { return data['items'][0]['snippet']['title']; } } return null; }注意:需为API密钥设置访问限制,防止滥用。
内容的提问来源于stack exchange,提问作者Taki Rajani
相关产品推荐
相关产品推荐

