编辑:我刚刚开始学习Flutter,但我还有很多东西要学习。目前,我很难找到重播视频的方法。我的目标是在视频播放完毕后重播视频,并显示一个重播图标供用户单击。这些是我导入的唯一软件包。
import 'package:video_player/video_player.dart';
import 'package:flutter/material.dart';
Widget _buildVideoPlay() {
return Center(
child: _controller.value.initialized ? _VideoStack() : Container(),
);
}
Widget _VideoStack() {
return Stack(
children: [
_VideoCore(),
FlatButton(
onPressed: () => setState(() {
_controller.value.isPlaying ? _controller.initialize() : _controller.pause()
}),
child: Center(
child: _controller.value.isPlaying
? Icon(Icons.pause, color: Colors.blue, size: 30.0)
: Icon(Icons.play_arrow, color: Colors.blue, size: 30.0),
),
],
);
}
Widget _VideoCore() {
return Container(
child: Center(
child: AspectRatio(
aspectRatio: _controller.value.aspectRatio,
child: VideoPlayer(_controller),
),
),
);
}
最佳答案
在这种情况下,如果持续时间为,则将finishedPlaying设置为 true
当前位置等于视频的时长。然后使用此 bool(boolean) 值显示“重播”按钮。
bool finishedPlaying = false;
@override
void initState() {
super.initState();
_controller.addListener(() {
setState(() {
});
if (_controller.value.duration == _controller.value.position) {
setState(() {
finishedPlaying = true;
});
}
});
}
FlatButton(
onPressed: () => setState(() {
if (finishedPlaying) {
_controller.play(); // Replay the video
} else {
_controller.value.isPlaying
? _controller.play()
: _controller.pause();
}
}),
child: Center(
child: finishedPlaying
? Icon(Icons.replay, color: Colors.blue, size: 30.0)
: (_controller.value.isPlaying
? Icon(Icons.pause, color: Colors.blue, size: 30.0)
: Icon(Icons.play_arrow,
color: Colors.blue, size: 30.0)))),