diff --git a/lib/pages/audio/view.dart b/lib/pages/audio/view.dart index 7c5054ac4..a5801b992 100644 --- a/lib/pages/audio/view.dart +++ b/lib/pages/audio/view.dart @@ -579,7 +579,7 @@ class _AudioPageState extends State { ), ), Text( - playMode.desc, + playMode.label, style: TextStyle(fontSize: 13, color: color), ), ], diff --git a/lib/pages/setting/models/extra_settings.dart b/lib/pages/setting/models/extra_settings.dart index 4e1b28055..78f0dfa66 100644 --- a/lib/pages/setting/models/extra_settings.dart +++ b/lib/pages/setting/models/extra_settings.dart @@ -89,10 +89,9 @@ List get extraSettings => [ leading: const Icon(MdiIcons.debugStepOver), value: () => Pref.pgcSkipType, items: SkipType.values, - onSelected: (value, setState) async { - await GStorage.setting.put(SettingBoxKey.pgcSkipType, value.index); - setState(); - }, + onSelected: (value, setState) => GStorage.setting + .put(SettingBoxKey.pgcSkipType, value.index) + .whenComplete(setState), ), SwitchModel( title: '检查未读动态', diff --git a/lib/pages/setting/models/play_settings.dart b/lib/pages/setting/models/play_settings.dart index badd0c3e6..e9fc70256 100644 --- a/lib/pages/setting/models/play_settings.dart +++ b/lib/pages/setting/models/play_settings.dart @@ -8,6 +8,7 @@ import 'package:PiliPlus/pages/setting/models/model.dart'; import 'package:PiliPlus/pages/setting/widgets/select_dialog.dart'; import 'package:PiliPlus/plugin/pl_player/models/bottom_progress_behavior.dart'; import 'package:PiliPlus/plugin/pl_player/models/fullscreen_mode.dart'; +import 'package:PiliPlus/plugin/pl_player/models/play_repeat.dart'; import 'package:PiliPlus/plugin/pl_player/utils/fullscreen.dart' show allowRotateScreen; import 'package:PiliPlus/services/service_locator.dart'; @@ -252,6 +253,15 @@ List get playSettings => [ onChanged: (value) => videoPlayerServiceHandler!.enableBackgroundPlay = value, ), + PopupModel( + title: '播放顺序', + leading: const Icon(Icons.repeat), + value: () => Pref.playRepeat, + items: PlayRepeat.values, + onSelected: (value, setState) => GStorage.video + .put(VideoBoxKey.playRepeat, value.index) + .whenComplete(setState), + ), const SwitchModel( title: '播放器设置仅对当前生效', subtitle: '弹幕、字幕及部分设置中没有的设置除外', diff --git a/lib/pages/setting/widgets/popup_item.dart b/lib/pages/setting/widgets/popup_item.dart index ea11038e1..6c83d9b9e 100644 --- a/lib/pages/setting/widgets/popup_item.dart +++ b/lib/pages/setting/widgets/popup_item.dart @@ -60,7 +60,7 @@ class _PopupListTileState extends State> { position: RelativeRect.fromLTRB(dx, offset.dy + 5, dx, 0), items: widget.itemBuilder(context), initialValue: value, - requestFocus: true, + requestFocus: false, ).then((T? newValue) { if (!mounted) { return; diff --git a/lib/pages/video/widgets/header_control.dart b/lib/pages/video/widgets/header_control.dart index 95b9970a7..ae6c5d7e3 100644 --- a/lib/pages/video/widgets/header_control.dart +++ b/lib/pages/video/widgets/header_control.dart @@ -624,7 +624,7 @@ class HeaderControlState extends State leading: const Icon(Icons.repeat, size: 20), title: const Text('播放顺序', style: titleStyle), subtitle: Text( - plPlayerController.playRepeat.desc, + plPlayerController.playRepeat.label, style: subTitleStyle, ), ), @@ -1695,7 +1695,7 @@ class HeaderControlState extends State contentPadding: const EdgeInsets.symmetric( horizontal: 20, ), - title: Text(i.desc), + title: Text(i.label), trailing: plPlayerController.playRepeat == i ? Icon( Icons.done, diff --git a/lib/plugin/pl_player/controller.dart b/lib/plugin/pl_player/controller.dart index e1e0d1a1a..1d95a9de1 100644 --- a/lib/plugin/pl_player/controller.dart +++ b/lib/plugin/pl_player/controller.dart @@ -1664,7 +1664,7 @@ class PlPlayerController with BlockConfigMixin { void setPlayRepeat(PlayRepeat type) { playRepeat = type; - video.put(VideoBoxKey.playRepeat, type.index); + if (!Pref.tempPlayerConf) video.put(VideoBoxKey.playRepeat, type.index); } void putSubtitleSettings() { diff --git a/lib/plugin/pl_player/models/play_repeat.dart b/lib/plugin/pl_player/models/play_repeat.dart index 6da79dd74..44be4faaf 100644 --- a/lib/plugin/pl_player/models/play_repeat.dart +++ b/lib/plugin/pl_player/models/play_repeat.dart @@ -1,4 +1,6 @@ -enum PlayRepeat { +import 'package:PiliPlus/models/common/enum_with_label.dart'; + +enum PlayRepeat implements EnumWithLabel { pause('播完暂停'), listOrder('顺序播放'), singleCycle('单个循环'), @@ -6,6 +8,7 @@ enum PlayRepeat { autoPlayRelated('自动连播') ; - final String desc; - const PlayRepeat(this.desc); + @override + final String label; + const PlayRepeat(this.label); }