Flutter使用youtube_player_flutter:^8.1.1实现视频启动自动全屏
实现youtube_player_flutter视频启动时自动全屏
要实现视频启动时自动全屏,你可以借助控制器的状态监听或YoutubePlayerBuilder的onReady回调,在视频准备就绪后触发全屏操作,同时调整自动播放配置。以下是修改后的完整代码:
late YoutubePlayerController _controller; @override void initState() { _controller = YoutubePlayerController( initialVideoId: 'zgOdG2lQQAC', flags: const YoutubePlayerFlags( autoPlay: true, // 开启自动播放,配合自动全屏逻辑 loop: false, ), ); // 监听播放器状态,视频开始播放时触发全屏 _controller.addListener(() { if (_controller.value.playerState == PlayerState.playing && !_controller.value.isFullScreen) { _controller.enterFullScreen(); } }); super.initState(); } @override void dispose() { _controller.dispose(); super.dispose(); } @override Widget build(BuildContext context) { return YoutubePlayerBuilder( player: YoutubePlayer(controller: _controller), builder: (context, player) { return Scaffold( appBar: const AppBarWidget(appBarTitle: solutionVideos), body: Padding( padding: EdgeInsets.symmetric( horizontal: context.dynamicWidth(20), vertical: context.dynamicWidth(20), ), child: Column( children: [ SizedBox( width: context.dynamicWidth(2.2), height: context.dynamicHeight(6), child: player, ), ], ), ), ); }, ); }
关键改动说明:
- 开启自动播放:将
YoutubePlayerFlags中的autoPlay设为true,视频需进入播放状态才能触发全屏逻辑,自动播放更贴合"启动时自动全屏"的需求。 - 添加状态监听器:通过
addListener监听播放器状态,检测到视频处于playing状态且未全屏时,调用enterFullScreen()触发全屏。 - 资源清理:在
dispose方法中销毁控制器,避免内存泄漏。
你也可以用YoutubePlayerBuilder的onReady回调实现,代码更简洁:
@override Widget build(BuildContext context) { return YoutubePlayerBuilder( player: YoutubePlayer(controller: _controller), onReady: () { // 视频加载完成后直接触发全屏 _controller.enterFullScreen(); // 若需自动播放,可在此调用_controller.play(); }, builder: (context, player) { // 原有build代码保持不变 return Scaffold(...); }, ); }
这种方式无需监听状态,视频准备就绪后直接触发全屏,适合不需要等待播放状态的场景。
内容的提问来源于stack exchange,提问作者user14175926
相关产品推荐
相关产品推荐

