diff --git a/lib/pages/setting/widgets/popup_item.dart b/lib/pages/setting/widgets/popup_item.dart index 4e5ef1894..4cf604ebd 100644 --- a/lib/pages/setting/widgets/popup_item.dart +++ b/lib/pages/setting/widgets/popup_item.dart @@ -24,6 +24,7 @@ class PopupListTile extends StatefulWidget { required this.value, required this.itemBuilder, required this.onSelected, + this.descFontSize = 13, }); final bool? dense; @@ -36,6 +37,7 @@ class PopupListTile extends StatefulWidget { final ValueGetter<(T, String)> value; final PopupMenuItemBuilder itemBuilder; final PopupMenuItemSelected onSelected; + final double descFontSize; @override State> createState() => _PopupListTileState(); @@ -88,7 +90,7 @@ class _PopupListTileState extends State> { final desc = Text( descStr, style: TextStyle( - fontSize: 13, + fontSize: widget.descFontSize, color: widget.enabled ? theme.colorScheme.secondary : theme.disabledColor, diff --git a/lib/pages/video/widgets/header_control.dart b/lib/pages/video/widgets/header_control.dart index dcfa49d41..f45c783d9 100644 --- a/lib/pages/video/widgets/header_control.dart +++ b/lib/pages/video/widgets/header_control.dart @@ -466,14 +466,15 @@ class HeaderControlState extends State final value = plPlayerController.superResolutionType.value; return (value, value.label); }, - itemBuilder: (_) => enumItemBuilder( + itemBuilder: (_) => enumItemBuilder( SuperResolutionType.values, ), onSelected: (value, setState) { plPlayerController.setShader(value); setState(); }, - descPosType: .title, + descFontSize: 12, + descPosType: .subtitle, ), if (!isFileSource) ListTile( @@ -618,18 +619,21 @@ class HeaderControlState extends State ), ), ], - ListTile( + PopupListTile( dense: true, - onTap: () { - Get.back(); - showSetRepeat(); - }, leading: const Icon(Icons.repeat, size: 20), - title: const Text('播放顺序', style: titleStyle), - subtitle: Text( - plPlayerController.playRepeat.label, - style: subTitleStyle, - ), + title: const Text('播放顺序'), + value: () { + final value = plPlayerController.playRepeat; + return (value, value.label); + }, + itemBuilder: (_) => enumItemBuilder(PlayRepeat.values), + onSelected: (value, setState) { + plPlayerController.setPlayRepeat(value); + setState(); + }, + descPosType: .subtitle, + descFontSize: 12, ), ListTile( dense: true, @@ -1651,58 +1655,6 @@ class HeaderControlState extends State ); } - /// 播放顺序 - void showSetRepeat() { - showBottomSheet( - (context, setState) { - final theme = Theme.of(context); - return Padding( - padding: const EdgeInsets.all(12), - child: Material( - clipBehavior: Clip.hardEdge, - color: theme.colorScheme.surface, - borderRadius: const BorderRadius.all(Radius.circular(12)), - child: CustomScrollView( - slivers: [ - const SliverToBoxAdapter( - child: SizedBox( - height: 45, - child: Center( - child: Text('选择播放顺序', style: titleStyle), - ), - ), - ), - SliverList.builder( - itemCount: PlayRepeat.values.length, - itemBuilder: (context, index) { - final i = PlayRepeat.values[index]; - return ListTile( - dense: true, - onTap: () { - Get.back(); - plPlayerController.setPlayRepeat(i); - }, - contentPadding: const EdgeInsets.symmetric( - horizontal: 20, - ), - title: Text(i.label), - trailing: plPlayerController.playRepeat == i - ? Icon( - Icons.done, - color: theme.colorScheme.primary, - ) - : null, - ); - }, - ), - ], - ), - ), - ); - }, - ); - } - late final isFileSource = videoDetailCtr.isFileSource; @override