Flutter 如何在颤振中实现视频播放器的回飞棒效果?
我正在使用软件包在我的应用程序中显示.mp4。通过添加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
\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()),
);
},
);
}
}