diff --git a/lib/pages/danmaku/view.dart b/lib/pages/danmaku/view.dart index 36ed70690..171d40d68 100644 --- a/lib/pages/danmaku/view.dart +++ b/lib/pages/danmaku/view.dart @@ -184,6 +184,7 @@ class _PlDanmakuState extends State { hideTop: playerController.blockTypes.contains(5), hideScroll: playerController.blockTypes.contains(2), hideBottom: playerController.blockTypes.contains(4), + hideSpecial: playerController.blockTypes.contains(7), duration: playerController.danmakuDuration / playerController.playbackSpeed, diff --git a/lib/pages/video/widgets/header_control.dart b/lib/pages/video/widgets/header_control.dart index 9921a7ba2..8ea64bb17 100644 --- a/lib/pages/video/widgets/header_control.dart +++ b/lib/pages/video/widgets/header_control.dart @@ -214,8 +214,8 @@ mixin HeaderMixin on State { void showSetDanmaku({bool isLive = false}) { // 屏蔽类型 const blockTypesList = [ - (value: 5, label: '顶部'), (value: 2, label: '滚动'), + (value: 5, label: '顶部'), (value: 4, label: '底部'), (value: 6, label: '彩色'), (value: 7, label: '高级'), @@ -370,6 +370,30 @@ mixin HeaderMixin on State { setState(() {}); } + void onUpdateBlockType(int blockType) { + if (blockTypes.contains(blockType)) { + blockTypes.remove(blockType); + } else { + blockTypes.add(blockType); + } + plPlayerController + ..blockTypes = blockTypes + ..blockColorful = blockTypes.contains(6) + ..putDanmakuSettings(); + setState(() {}); + try { + danmakuController?.updateOption( + danmakuController.option.copyWith( + hideTop: blockTypes.contains(5), + hideBottom: blockTypes.contains(4), + hideScroll: blockTypes.contains(2), + hideSpecial: blockTypes.contains(7), + // 添加或修改其他需要修改的选项属性 + ), + ); + } catch (_) {} + } + return Padding( padding: const EdgeInsets.all(12), child: Material( @@ -436,40 +460,20 @@ mixin HeaderMixin on State { const Text('按类型屏蔽'), Padding( padding: const EdgeInsets.only(top: 12), - child: Row( - children: [ - for (final (value: value, label: label) - in blockTypesList) ...[ - ActionRowLineItem( - onTap: () { - if (blockTypes.contains(value)) { - blockTypes.remove(value); - } else { - blockTypes.add(value); - } - plPlayerController - ..blockTypes = blockTypes - ..blockColorful = blockTypes.contains(6) - ..putDanmakuSettings(); - setState(() {}); - try { - danmakuController?.updateOption( - danmakuController.option.copyWith( - hideTop: blockTypes.contains(5), - hideBottom: blockTypes.contains(4), - hideScroll: blockTypes.contains(2), - hideSpecial: blockTypes.contains(7), - // 添加或修改其他需要修改的选项属性 - ), - ); - } catch (_) {} - }, - text: label, - selectStatus: blockTypes.contains(value), - ), - const SizedBox(width: 10), - ], - ], + child: SingleChildScrollView( + scrollDirection: Axis.horizontal, + child: Row( + spacing: 10, + children: blockTypesList + .map( + (e) => ActionRowLineItem( + onTap: () => onUpdateBlockType(e.value), + text: e.label, + selectStatus: blockTypes.contains(e.value), + ), + ) + .toList(), + ), ), ), SetSwitchItem(