提交 993eb30c authored 作者: jungleiOS's avatar jungleiOS

dispose 时销毁动画控制器 重置按钮不根据结束回调是否实现而显示

上级 6abf309a
...@@ -213,6 +213,7 @@ class GZVideoPlayerState extends State<GZVideoPlayer> ...@@ -213,6 +213,7 @@ class GZVideoPlayerState extends State<GZVideoPlayer>
]); ]);
// 常亮 // 常亮
Wakelock.toggle(enable: true); Wakelock.toggle(enable: true);
/// 倍数按钮标题 /// 倍数按钮标题
_speedTitle = widget.videoStyle.videoSpeedButtonStyle.title; _speedTitle = widget.videoStyle.videoSpeedButtonStyle.title;
_initPlayer(); _initPlayer();
...@@ -230,6 +231,7 @@ class GZVideoPlayerState extends State<GZVideoPlayer> ...@@ -230,6 +231,7 @@ class GZVideoPlayerState extends State<GZVideoPlayer>
void dispose() { void dispose() {
_clearHideControlBarTimer(); _clearHideControlBarTimer();
_controller.dispose(); _controller.dispose();
_controlBarAnimationController.dispose();
///竖屏 ///竖屏
SystemChrome.setPreferredOrientations([ SystemChrome.setPreferredOrientations([
...@@ -308,8 +310,8 @@ class GZVideoPlayerState extends State<GZVideoPlayer> ...@@ -308,8 +310,8 @@ class GZVideoPlayerState extends State<GZVideoPlayer>
}); });
} else { } else {
if (oPosition >= oDuration) { if (oPosition >= oDuration) {
resetVideoPlayer();
if (widget.onEnded != null) { if (widget.onEnded != null) {
resetVideoPlayer();
widget.onEnded!(_controller.value); widget.onEnded!(_controller.value);
} }
} }
...@@ -638,36 +640,38 @@ class GZVideoPlayerState extends State<GZVideoPlayer> ...@@ -638,36 +640,38 @@ class GZVideoPlayerState extends State<GZVideoPlayer>
: const Text(""), : const Text(""),
/// 主字幕 /// 主字幕
widget.videoStyle.videoSubtitlesStyle.mainTitle ?? Align( widget.videoStyle.videoSubtitlesStyle.mainTitle ??
alignment: Alignment.bottomCenter, Align(
child: Container( alignment: Alignment.bottomCenter,
padding: const EdgeInsets.fromLTRB(10, 0, 10, 30), child: Container(
child: Text("", padding: const EdgeInsets.fromLTRB(10, 0, 10, 30),
maxLines: 2, child: Text("",
textAlign: TextAlign.center, maxLines: 2,
style: TextStyle( textAlign: TextAlign.center,
color: widget style: TextStyle(
.videoStyle.videoSubtitlesStyle.mainTitleColor, color:
fontSize: widget widget.videoStyle.videoSubtitlesStyle.mainTitleColor,
.videoStyle.videoSubtitlesStyle.mainTitleFontSize)), fontSize: widget
), .videoStyle.videoSubtitlesStyle.mainTitleFontSize)),
), ),
),
/// 辅字幕 /// 辅字幕
widget.videoStyle.videoSubtitlesStyle.subTitle ?? Align( widget.videoStyle.videoSubtitlesStyle.subTitle ??
alignment: Alignment.bottomCenter, Align(
child: Container( alignment: Alignment.bottomCenter,
padding: const EdgeInsets.all(10), child: Container(
child: Text("", padding: const EdgeInsets.all(10),
maxLines: 2, child: Text("",
textAlign: TextAlign.center, maxLines: 2,
style: TextStyle( textAlign: TextAlign.center,
color: style: TextStyle(
widget.videoStyle.videoSubtitlesStyle.subTitleColor, color:
fontSize: widget widget.videoStyle.videoSubtitlesStyle.subTitleColor,
.videoStyle.videoSubtitlesStyle.subTitleFontSize)), fontSize: widget
), .videoStyle.videoSubtitlesStyle.subTitleFontSize)),
), ),
),
/// 底部控制拦 /// 底部控制拦
VideoBottomBar( VideoBottomBar(
...@@ -690,15 +694,17 @@ class GZVideoPlayerState extends State<GZVideoPlayer> ...@@ -690,15 +694,17 @@ class GZVideoPlayerState extends State<GZVideoPlayer>
}, },
), ),
widget.brightnessWidget ?? BrightnessWidget( widget.brightnessWidget ??
brightness: _brightness, BrightnessWidget(
videoBrightnessStyle: widget.videoStyle.videoBrightnessStyle, brightness: _brightness,
), videoBrightnessStyle: widget.videoStyle.videoBrightnessStyle,
),
widget.volumeWidget ?? VolumeWidget( widget.volumeWidget ??
volume: _volume, VolumeWidget(
videoVolumeStyle: widget.videoStyle.videoVolumeStyle, volume: _volume,
), videoVolumeStyle: widget.videoStyle.videoVolumeStyle,
),
/// Loading /// Loading
!_initialized || _isBuffing !_initialized || _isBuffing
...@@ -713,120 +719,123 @@ class GZVideoPlayerState extends State<GZVideoPlayer> ...@@ -713,120 +719,123 @@ class GZVideoPlayerState extends State<GZVideoPlayer>
final videoChildrens = <Widget>[ final videoChildrens = <Widget>[
/// 视频区域 /// 视频区域
GestureDetector( GestureDetector(
//点击 //点击
onTap: () { onTap: () {
//显示或隐藏菜单栏和进度条 //显示或隐藏菜单栏和进度条
toggleControls(); toggleControls();
}, },
//双击 //双击
onDoubleTap: () { onDoubleTap: () {
if (!_controller.value.isInitialized) return; if (!_controller.value.isInitialized) return;
togglePlay(); togglePlay();
}, },
/// 水平滑动 - 调节视频进度 /// 水平滑动 - 调节视频进度
onHorizontalDragStart: (DragStartDetails details) { onHorizontalDragStart: (DragStartDetails details) {
if (!_controller.value.isInitialized) return; if (!_controller.value.isInitialized) return;
if (_controller.value.isPlaying) { if (_controller.value.isPlaying) {
_controller.pause(); _controller.pause();
} }
}, },
onHorizontalDragUpdate: (DragUpdateDetails details) { onHorizontalDragUpdate: (DragUpdateDetails details) {
if (!_controller.value.isInitialized) return; if (!_controller.value.isInitialized) return;
if (!_showMenu) { if (!_showMenu) {
setState(() { setState(() {
_showMenu = true; _showMenu = true;
}); });
_createHideControlBarTimer(); _createHideControlBarTimer();
} }
var currentPosition = _controller.value.position; var currentPosition = _controller.value.position;
if (details.primaryDelta != null) { if (details.primaryDelta != null) {
_controller.seekTo(Duration( _controller.seekTo(Duration(
milliseconds: details.primaryDelta! > 0 milliseconds: details.primaryDelta! > 0
? currentPosition.inMilliseconds + ? currentPosition.inMilliseconds +
widget.playOptions.progressGestureUnit widget.playOptions.progressGestureUnit
: currentPosition.inMilliseconds - : currentPosition.inMilliseconds -
widget.playOptions.progressGestureUnit)); widget.playOptions.progressGestureUnit));
} }
}, },
onHorizontalDragEnd: (DragEndDetails details) { onHorizontalDragEnd: (DragEndDetails details) {
if (!_controller.value.isPlaying) { if (!_controller.value.isPlaying) {
_controller.play(); _controller.play();
} }
}, },
/// 垂直滑动 - 调节亮度以及音量 /// 垂直滑动 - 调节亮度以及音量
onVerticalDragStart: (DragStartDetails details) { onVerticalDragStart: (DragStartDetails details) {
if (!_controller.value.isInitialized) return; if (!_controller.value.isInitialized) return;
}, },
onVerticalDragUpdate: (DragUpdateDetails details) async { onVerticalDragUpdate: (DragUpdateDetails details) async {
if (!_controller.value.isInitialized || if (!_controller.value.isInitialized || details.primaryDelta == null)
details.primaryDelta == null) return; return;
// 右侧垂直滑动 - 音量调节 // 右侧垂直滑动 - 音量调节
if (details.globalPosition.dx >= (screenSize.width / 2)) { if (details.globalPosition.dx >= (screenSize.width / 2)) {
_volume.value = _controller.value.volume; _volume.value = _controller.value.volume;
if (details.primaryDelta! > 0) { if (details.primaryDelta! > 0) {
//往下滑动 //往下滑动
_volume.value = _controller.value.volume - _volume.value = _controller.value.volume -
widget.playOptions.volumeGestureUnit; widget.playOptions.volumeGestureUnit;
widget.onVolume?.call(_volume.value); widget.onVolume?.call(_volume.value);
if (_volume.value <= 0) { if (_volume.value <= 0) {
_volume.value = 0.0; _volume.value = 0.0;
}
widget.onVolume?.call(_volume.value);
_controller.setVolume(_volume.value);
} else {
//往上滑动
_volume.value = _controller.value.volume +
widget.playOptions.volumeGestureUnit;
widget.onVolume?.call(_volume.value);
if (_volume.value >= 1) {
_volume.value = 1.0;
}
widget.onVolume?.call(_volume.value);
_controller.setVolume(_volume.value);
} }
_volume.value = _controller.value.volume; widget.onVolume?.call(_volume.value);
_controller.setVolume(_volume.value);
} else { } else {
// 左侧垂直滑动 - 亮度调节 //往上滑动
_brightness.value = await ScreenBrightness().current; _volume.value = _controller.value.volume +
if (details.primaryDelta! > 0) { widget.playOptions.volumeGestureUnit;
//往下滑动 widget.onVolume?.call(_volume.value);
_brightness.value -= widget.playOptions.brightnessGestureUnit; if (_volume.value >= 1) {
widget.onBrightness?.call(_brightness.value); _volume.value = 1.0;
if (_brightness.value <= 0) {
_brightness.value = 0.0;
}
widget.onBrightness?.call(_brightness.value);
await ScreenBrightness().setScreenBrightness(_brightness.value);
} else {
//往上滑动
_brightness.value += widget.playOptions.brightnessGestureUnit;
widget.onBrightness?.call(_brightness.value);
if (_brightness.value >= 1) {
_brightness.value = 1.0;
}
widget.onBrightness?.call(_brightness.value);
await ScreenBrightness().setScreenBrightness(_brightness.value);
} }
widget.onVolume?.call(_volume.value);
// Screen.setBrightness(brightness); _controller.setVolume(_volume.value);
} }
}, _volume.value = _controller.value.volume;
onVerticalDragEnd: (DragEndDetails details) {}, } else {
// 左侧垂直滑动 - 亮度调节
_brightness.value = await ScreenBrightness().current;
if (details.primaryDelta! > 0) {
//往下滑动
_brightness.value -= widget.playOptions.brightnessGestureUnit;
widget.onBrightness?.call(_brightness.value);
if (_brightness.value <= 0) {
_brightness.value = 0.0;
}
widget.onBrightness?.call(_brightness.value);
await ScreenBrightness().setScreenBrightness(_brightness.value);
} else {
//往上滑动
_brightness.value += widget.playOptions.brightnessGestureUnit;
widget.onBrightness?.call(_brightness.value);
if (_brightness.value >= 1) {
_brightness.value = 1.0;
}
widget.onBrightness?.call(_brightness.value);
await ScreenBrightness().setScreenBrightness(_brightness.value);
}
// Screen.setBrightness(brightness);
}
},
onVerticalDragEnd: (DragEndDetails details) {},
///视频播放器 ///视频播放器
child: ClipRect( child: ClipRect(
child: Container( child: Container(
width: double.infinity, width: double.infinity,
height: double.infinity, height: double.infinity,
color: Colors.black, color: Colors.black,
child: Center( child: Center(
child: AspectRatio( child: AspectRatio(
aspectRatio: _controller.value.aspectRatio, aspectRatio: _controller.value.aspectRatio,
child: VideoPlayer(_controller), child: VideoPlayer(_controller),
)), ),
))), ),
),
),
),
///控制拦以及(可拓展)元素 ///控制拦以及(可拓展)元素
]; ];
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论