【问题标题】:Video Carousel slider for flutter颤振的视频轮播滑块
【发布时间】:2019-10-08 05:34:14
【问题描述】:

我知道有图像轮播滑块,但我需要的是视频轮播滑块。我设法使用chewie将视频添加到轮播滑块,但不知道如何在当前视频播放完毕后自动转移到下一个视频。

        class _ChewieDemoState extends State<ChewieDemo> {
          TargetPlatform _platform;
          VideoPlayerController _videoPlayerController1;
          VideoPlayerController _videoPlayerController2;
          ChewieController _chewieController;
          ChewieController _chewieController2;
          void initState() {
          super.initState();
          _videoPlayerController1 = VideoPlayerController.network(
            'https://flutter.github.io/assets-for-api-docs/assets/videos/butterfly.mp4');
          _videoPlayerController2 = VideoPlayerController.network(
            'https://www.sample-videos.com/video123/mp4/720/big_buck_bunny_720p_1mb.mp4');

          _chewieController = ChewieController(
          videoPlayerController: _videoPlayerController1,
          aspectRatio: 4 / 3,
          autoPlay: true,
          looping: false,
          );

          _chewieController2 = ChewieController(
          videoPlayerController: _videoPlayerController2,
          aspectRatio: 4 / 3,
          autoPlay: true,
          looping: false,);}

在小部件构建中

body: CarouselSlider(
      items: [Chewie( controller: _chewieController,),Chewie(controller: _chewieController2,)],
      autoPlay: true,
      autoPlayInterval: Duration(seconds: 1),
      autoPlayAnimationDuration: Duration(milliseconds: 800),
        ),

我正在考虑这个解决方案:获取视频的持续时间并将其放入 autoPlayInterval,每次幻灯片更改时将持续时间更改为当前视频。

autoPlayInterval: Duration(seconds: duration),

有 onPageChanged: callbackFunction,但我不明白它是如何工作的,我在那里改变了持续时间但不影响任何东西。

视频结束时自动更换幻灯片的代码。

goToNext() {
    carouselSlider.nextPage(
        duration: Duration(seconds: 1), curve: Curves.decelerate);
  }
void checkVideo(){

    if(_videoPlayerController1.value.position == _videoPlayerController1.value.duration){
      print('video Ended');
      _videoPlayerController1.seekTo(Duration(seconds:0 )); // If i don't put this here it will keep transfer to nextpage.
      goToNext();
      _videoPlayerController2.seekTo(Duration(seconds:0 ));
}

【问题讨论】:

    标签: flutter flutter-layout


    【解决方案1】:

    当当前视频结束时,您可以告诉滑块转到下一页。

    【讨论】:

    • 抱歉回复晚了,我试试你的方法,它可以工作,但是如果我将视频位置向后移动,它会播放一点,然后滑块在时间到时转到下一页。示例:视频持续时间为 7 ,它播放到 00:04 然后我将其移动到 00:00 然后它将再播放 3 秒并移动到下一页。无论如何要防止它?我只是添加代码
    • 您在控制器侦听器上检查什么以转到下一页?
    • 您可以使用标志 videoEnded 并在移动视频位置时将其设置为 false。像这样: if (!videoEnded && position == duration) {videoEnded = true; goToNext();} else {videoEnded = false;}
    • 对不起,我正在尝试修复这个错误,偶尔的崩溃 emu 和 10m 启动让它真的很长。这不是我早说的那个错误,我有 2 个视频控制器,所以每次应用程序启动,它同时运行 2 个视频,buffterfly 7s 剪辑和 bee 6s 剪辑所以每次 6s 剪辑结束时它都会改变页面,这就是为什么我认为它像以前一样累积,我有点修复它但仍然有点错误。第一次运行后,在 6s 处更改页面,并且在蜜蜂剪辑处仍然在屏幕上播放按钮,然后它将完美运行,
    • 更新:我通过将剪辑 2 的咀嚼控制器更改为 autoPlay=false 来修复它,autoInitialize: true,如果我让我自动播放 Carousel 幻灯片,它运行完美,但如果我自己移动幻灯片会导致bug,以后会想办法的,谢谢你的帮助
    猜你喜欢
    • 1970-01-01
    • 2019-04-29
    • 2022-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-03
    • 2021-09-13
    • 1970-01-01
    相关资源
    最近更新 更多