Flutter video_player组件视频无法显示、报错UnimplementedError及移动端卡顿问题求助
Flutter video_player组件视频无法显示、报错UnimplementedError及移动端卡顿问题求助
各位好,我现在在用Flutter的video_player组件做视频轮播功能,遇到了几个头疼的问题,想请教下大家:
- 在Chrome浏览器中运行代码时,直接抛出了这个错误:
UnimplementedError (UnimplementedError: init() has not been implemented.)
- 在手机端运行时,虽然没有报错,但界面卡顿得特别厉害,视频显示很不流畅;反而Chrome端虽然报错,但运行起来不卡顿,明明电脑的内存还有剩余。
我已经尝试过调整视频时长、重写代码、降低视频帧率这些方法,但都没能解决问题。视频本身是没问题的,单独播放没有异常。
以下是我的代码:
final videos = [ 'assets/videos/Frozen_Flower_In_Ice_1402.mp4', 'assets/videos/Main_EarthPlanet.mp4', ]; class VideosScreen extends StatefulWidget { const VideosScreen({super.key}); @override State<VideosScreen> createState() => _VideosScreenState(); } class _VideosScreenState extends State<VideosScreen> { late PageController _pageController; @override void initState() { super.initState(); _pageController = PageController(viewportFraction: 0.8); } @override void dispose() { _pageController.dispose(); super.dispose(); } @override Widget build(BuildContext context) { return PageView.builder( controller: _pageController, itemCount: videos.length, itemBuilder: (context, index) { return VideoCard( assetPath: videos[index], ); }, ); } } class VideoCard extends StatefulWidget { const VideoCard({ super.key, required this.assetPath, }); final String assetPath; @override State<VideoCard> createState() => _VideoCardState(); } class _VideoCardState extends State<VideoCard> { late VideoPlayerController _controller; @override void initState() { super.initState(); _controller = VideoPlayerController.asset(widget.assetPath); _controller ..addListener(() => setState(() {})) ..setLooping(true) ..setVolume(0) ..initialize().then((_) => setState(() {})) ..play(); } @override void dispose() { _controller.dispose(); super.dispose(); } @override Widget build(BuildContext context) { return AnimatedContainer( duration: const Duration(milliseconds: 250), margin: const EdgeInsets.symmetric(vertical: 32, horizontal: 16), decoration: BoxDecoration( color: Colors.white, borderRadius: BorderRadius.circular(16), boxShadow: [ BoxShadow( color: Colors.black.withOpacity(0.3), offset: const Offset(0, 6), blurRadius: 8, ), ], ), child: ClipRRect( borderRadius: BorderRadius.circular(16), child: AspectRatio( aspectRatio: _controller.value.aspectRatio, child: VideoPlayer(_controller), ), ), ); } }
有没有大佬能帮忙分析下问题出在哪,怎么解决这些问题呢?
备注:内容来源于stack exchange,提问作者KriperoNio
相关产品推荐
相关产品推荐

