Chewie颤动视频播放器

Posted

技术标签:

【中文标题】Chewie颤动视频播放器【英文标题】:Chewie flutter video Player 【发布时间】:2020-12-08 08:25:42 【问题描述】:

我正在使用带有自定义控制栏的咀嚼播放器,当播放器切换到全屏时,我看不到控件..即使播放器进入全屏,我也需要显示控件。我没有使用chewie提供的控件,因为我不希望进度条是可触摸的,即我不希望用户倒带视频....

下面是代码:-

@override
  void initState() 
    super.initState();

    _videoPlayerController1 = VideoPlayerController.network(widget.videoURL);

    _chewieController = ChewieController(
      videoPlayerController: _videoPlayerController1,
      //  aspectRatio: 3 / 2,
      autoPlay: false,
      looping: false,
      autoInitialize: true,
      showControls: true,
      fullScreenByDefault: false,
      //seekTo:value,
      startAt: Duration(milliseconds: widget.time),
      //customControls: customControl(),

      placeholder: Container(
        color: Colors.black87,
        child: Container(
          child: Center(
              child: CircularProgressIndicator(
            valueColor:
                new AlwaysStoppedAnimation<Color>(Colors.deepPurpleAccent),
          )),
        ),
      ),
    //  overlay:

      // autoInitialize: true,
    );

    setState(() 
      _loading = true;
    );

   

  



@override
  Widget build(BuildContext context) 
    return WillPopScope(
      onWillPop: _onWillPop,
      child: SafeArea(
        child: MaterialApp(
          home: Scaffold(
            backgroundColor: Colors.black,
            body: Column(
              children: <Widget>[
                Expanded(
                  child: Center(
                    child: GestureDetector(
                      onDoubleTap: () 
                        _chewieController.enterFullScreen();
                      ,
                      onTap: () 
                        if (_videoPlayerController1.value.isPlaying) 
                          setState(() 
                            _chewieController.pause();
                            isPlaying = false;
                          );
                         else 
                          setState(() 
                            _chewieController.play();
                            isPlaying = true;
                          );
                        
                      ,
                      child: Chewie(
                        controller: _chewieController,
                      ),
                    ),
                  ),
                ),
                Row(
                  children: [
                    FlatButton(
                      onPressed: () 
                        if (_videoPlayerController1.value.isPlaying) 
                          setState(() 
                            _chewieController.pause();
                            isPlaying = false;
                          );
                         else 
                          setState(() 
                            _chewieController.play();
                            isPlaying = true;
                          );
                        
                      ,
                      child: Icon(
                        !_videoPlayerController1.value.isPlaying
                            ? Icons.play_arrow
                            : Icons.pause,
                        color: Colors.white,
                        size: 30,
                      ),
                    ),
                    ValueListenableBuilder(
                      valueListenable: _videoPlayerController1,
                      builder: (context, VideoPlayerValue value, child) 
                        //Do Something with the value.
                        if (value.initialized && value.isPlaying) 
                          return new LinearPercentIndicator(
                            width: MediaQuery.of(context).size.width - 180,
                            lineHeight: 8.0,
                            percent: (value.position.inSeconds.toDouble() /
                                value.duration.inSeconds.toDouble()),

                            linearStrokeCap: LinearStrokeCap.roundAll,
                            backgroundColor: Colors.grey,
                            progressColor: Colors.amber,
                          );
                         else 
                          return new LinearPercentIndicator(
                            width: MediaQuery.of(context).size.width - 180,
                            lineHeight: 8.0,
                            percent: 0.0,
                            linearStrokeCap: LinearStrokeCap.roundAll,
                            backgroundColor: Colors.grey,
                            progressColor: Colors.amber,
                          );
                        
                      ,
                      //child:
                    ),
                    FlatButton(
                      onPressed: () 
                        _chewieController.enterFullScreen();
                        setState(() 
                          isFullscreen = true;
                        );

                      ,
                      child: Icon(
                        Icons.fullscreen,
                        color: Colors.white,
                        size: 30,
                      ),
                    ),
//
                  ],
                ),
              ],
            ),
          ),
        ),
      ),
    );
  

【问题讨论】:

大家好 - 我们如何更改视频中心播放按钮的背景颜色(Chewie)? 【参考方案1】:

你可以控制颜色按钮

  materialProgressColors:ChewieProgressColors(backgroundColor: Colors.red,bufferedColor: Colors.red,

handleColor: Colors.blue,playedColor: Colors.orange),

添加到您的控制器

【讨论】:

以上是关于Chewie颤动视频播放器的主要内容,如果未能解决你的问题,请参考以下文章

Flutter 视频播放器检索视频的宽度和高度

flutter视频播放videoplayer与chewie

Flutter开发--视频播放器

在flutter webview中播放视频时,有没有办法打开像MX播放器这样的外部视频播放器? [关闭]

Flutter播放器 chewie-0.9.8 自定义UI,滑动手势

[Flutter] 音频播放插件 audioplayers 的一个路径坑