Flutter使用video_player插件无法显示视频,相关报错如何解决?
问题解决方案
你遇到的问题分为编译错误、运行错误两类,按以下步骤操作可全部解决:
1 修复4项编译错误(类型未定义、目标URI不存在)
- 修正pubspec.yaml配置:首先删除name字段前的多余空格,给video_player指定适配空安全的版本号,确保所有依赖项缩进正确,修正后的依赖部分代码如下:
dependencies: flutter: sdk: flutter dio: ^4.0.0 file_picker: ^4.0.0 video_player: ^2.4.5 advance_pdf_viewer: ^2.0.0 cupertino_icons: ^1.0.2 http: ^0.13.0
- 安装依赖:在项目根目录终端执行命令
flutter pub get - 重启IDE:清除IDE缓存的导入识别错误,重启后4项编译错误会自动消失
- 适配空安全语法:你的项目SDK版本开启了空安全,调整代码中控制器的声明和使用逻辑:
// 控制器声明改为可空类型 VideoPlayerController? _controller; // build方法中的初始化判断改为 child: _controller != null && _controller!.value.isInitialized ? AspectRatio( aspectRatio: _controller!.value.aspectRatio, child: VideoPlayer(_controller!), ) : const CircularProgressIndicator(),
2 修复运行时崩溃、视频无法加载问题
- 不要直接传入YouTube链接:
video_player仅支持mp4、m3u8等直链视频资源,YouTube链接为网页地址,无法直接解析播放,如需播放YouTube内容请使用专门的YouTube播放插件。 - 添加安卓网络权限:打开
android/app/src/main/AndroidManifest.xml,在manifest标签下添加网络访问权限:
<uses-permission android:name="android.permission.INTERNET"/>
- 解决模拟器兼容问题:你当前使用的x86架构安卓模拟器存在硬件解码兼容问题,优先使用真机测试可直接规避该问题;如果需要继续使用模拟器,可更换x86_64架构的模拟器,或在初始化控制器时添加兼容配置:
_controller = VideoPlayerController.network( 'https://flutter.github.io/assets-for-api-docs/assets/videos/bee.mp4', videoPlayerOptions: VideoPlayerOptions( androidApplySurfaceTransforms: true, ), )..initialize().then((_) { setState(() {}); });
- 清理缓存重新运行:执行命令
flutter clean后重新启动项目,即可解决Lost connection to device的崩溃问题。
内容的提问来源于stack exchange,提问作者WJLee9559
相关产品推荐
相关产品推荐

