feat: 底部播放进度条设置

This commit is contained in:
guozhigq
2023-08-20 21:01:15 +08:00
parent 8f84c6a6f9
commit 332d5dc38c
5 changed files with 69 additions and 2 deletions

View File

@ -7,6 +7,8 @@ export './models/play_status.dart';
export './models/data_status.dart';
export './widgets/common_btn.dart';
export './models/play_speed.dart';
export './models/fullscreen_mode.dart';
export './models/bottom_progress_behavior.dart';
export './widgets/app_bar_ani.dart';
export './utils/fullscreen.dart';
export './utils.dart';

View File

@ -0,0 +1,23 @@
// ignore: camel_case_types
enum BtmProgresBehavior {
alwaysShow,
alwaysHide,
onlyShowFullScreen,
}
extension BtmProgresBehaviorDesc on BtmProgresBehavior {
String get description => ['始终展示', '始终隐藏', '仅全屏时展示'][index];
}
extension BtmProgresBehaviorCode on BtmProgresBehavior {
static final List<int> _codeList = [0, 1, 2];
int get code => _codeList[index];
static BtmProgresBehavior? fromCode(int code) {
final index = _codeList.indexOf(code);
if (index != -1) {
return BtmProgresBehavior.values[index];
}
return null;
}
}

View File

@ -18,6 +18,7 @@ import 'package:pilipala/utils/feed_back.dart';
import 'package:pilipala/utils/storage.dart';
import 'package:screen_brightness/screen_brightness.dart';
import 'models/bottom_progress_behavior.dart';
import 'utils/fullscreen.dart';
import 'widgets/app_bar_ani.dart';
import 'widgets/backward_seek.dart';
@ -67,6 +68,7 @@ class _PLVideoPlayerState extends State<PLVideoPlayer>
Box setting = GStrorage.setting;
late FullScreenMode mode;
late int defaultBtmProgressBehavior;
void onDoubleTapSeekBackward() {
setState(() {
@ -87,6 +89,8 @@ class _PLVideoPlayerState extends State<PLVideoPlayer>
vsync: this, duration: const Duration(milliseconds: 300));
videoController = widget.controller.videoController!;
widget.controller.headerControl = widget.headerControl;
defaultBtmProgressBehavior = setting.get(SettingBoxKey.btmProgressBehavior,
defaultValue: BtmProgresBehavior.values.first.code);
Future.microtask(() async {
try {
@ -203,7 +207,7 @@ class _PLVideoPlayerState extends State<PLVideoPlayer>
systemOverlayStyle: SystemUiOverlayStyle.light,
),
body: SafeArea(
bottom: true,
bottom: false,
child: PLVideoPlayer(
controller: _,
headerControl: _.headerControl,
@ -626,6 +630,15 @@ class _PLVideoPlayerState extends State<PLVideoPlayer>
final int value = _.sliderPosition.value.inSeconds;
final int max = _.duration.value.inSeconds;
final int buffer = _.buffered.value.inSeconds;
if (defaultBtmProgressBehavior ==
BtmProgresBehavior.alwaysHide.code) {
return Container();
}
if (defaultBtmProgressBehavior ==
BtmProgresBehavior.onlyShowFullScreen.code &&
!_.isFullScreen.value) {
return Container();
}
if (value > max || max <= 0) {
return Container();
}