You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter video_player组件视频无法显示、报错UnimplementedError及移动端卡顿问题求助

Flutter video_player组件视频无法显示、报错UnimplementedError及移动端卡顿问题求助

各位好,我现在在用Flutter的video_player组件做视频轮播功能,遇到了几个头疼的问题,想请教下大家:

  1. 在Chrome浏览器中运行代码时,直接抛出了这个错误:

UnimplementedError (UnimplementedError: init() has not been implemented.)

  1. 在手机端运行时,虽然没有报错,但界面卡顿得特别厉害,视频显示很不流畅;反而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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 12:39:37