Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 如何在颤振中实现视频播放器的回飞棒效果?_Flutter_Dart_Avplayer_Exoplayer_Flutter Video Player - Fatal编程技术网

Flutter 如何在颤振中实现视频播放器的回飞棒效果?

Flutter 如何在颤振中实现视频播放器的回飞棒效果?,flutter,dart,avplayer,exoplayer,flutter-video-player,Flutter,Dart,Avplayer,Exoplayer,Flutter Video Player,我正在使用软件包在我的应用程序中显示.mp4。通过添加\u controller.setLooping(true),我可以非常轻松地循环它。然而,我不能用这个软件包创造一个回力棒效应。你对如何实施有什么想法吗 在这里您可以获得我的示例代码: class DashboardVideoBackground extends StatefulWidget { DashboardVideoBackground({Key key}) : super(key: key); @override S

我正在使用软件包在我的应用程序中显示.mp4。通过添加
\u controller.setLooping(true),我可以非常轻松地循环它。然而,我不能用这个软件包创造一个回力棒效应。你对如何实施有什么想法吗

在这里您可以获得我的示例代码:

class DashboardVideoBackground extends StatefulWidget {
  DashboardVideoBackground({Key key}) : super(key: key);

  @override
  State<StatefulWidget> createState() => _DashboardVideoBackgroundState();
}

class _DashboardVideoBackgroundState extends State<DashboardVideoBackground> {
  VideoPlayerController _controller;
  Future<void> _initializeVideoPlayerFuture;

  @override
  void initState() {
    _controller =
        VideoPlayerController.asset('assets/mock/dashboard_background.mp4');
    _initializeVideoPlayerFuture = _controller.initialize();
    _controller.setLooping(true);

    _controller.play();
    super.initState();
  }

  @override
  void dispose() {
    _controller.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return LayoutBuilder(
      builder: (context, constraints) {
        return FutureBuilder(
          future: _initializeVideoPlayerFuture,
          builder: (context, snapshot) =>
              snapshot.connectionState == ConnectionState.done
                  ? OverflowBox(
                      maxWidth: double.infinity,
                      maxHeight: double.infinity,
                      alignment: Alignment.center,
                      child: FittedBox(
                        fit: BoxFit.cover,
                        alignment: Alignment.center,
                        child: Container(
                          width: MediaQuery.of(context).size.width * 1.5,
                          height: MediaQuery.of(context).size.height,
                          child: VideoPlayer(_controller),
                        ),
                      ),
                    )
                  : Center(child: CircularProgressIndicator()),
        );
      },
    );
  }
}
类DashboardVideoBackground扩展StatefulWidget{
DashboardVideoBackground({Key}):超级(Key:Key);
@凌驾
State createState()=>DashboardVideoBackgroundState();
}
类_仪表板VideoBackgroundState扩展状态{
视频播放控制器\u控制器;
未来(Future)初始设定未来玩家;;
@凌驾
void initState(){
_控制器=
VideoPlayerController.asset('assets/mock/dashboard_background.mp4');
_initializeVideoPlayerFuture=_controller.initialize();
_控制器。设置循环(真);
_controller.play();
super.initState();
}
@凌驾
无效处置(){
_controller.dispose();
super.dispose();
}
@凌驾
小部件构建(构建上下文){
返回布局生成器(
生成器:(上下文、约束){
回归未来建设者(
未来:_initializevideoplayer未来,
生成器:(上下文,快照)=>
snapshot.connectionState==connectionState.done
?溢流箱(
maxWidth:double.infinity,
maxHeight:double.infinity,
对齐:对齐.center,
孩子:FittedBox(
适合:BoxFit.cover,
对齐:对齐.center,
子:容器(
宽度:MediaQuery.of(context).size.width*1.5,
高度:MediaQuery.of(context).size.height,
子项:视频播放器(_控制器),
),
),
)
:居中(子项:CircularProgressIndicator()),
);
},
);
}
}