mirror of
https://github.com/HChaZZY/PiliPlus.git
synced 2025-12-06 09:13:48 +08:00
@@ -791,7 +791,7 @@ class _LiveRoomPageState extends State<LiveRoomPage>
|
||||
Obx(
|
||||
() {
|
||||
final enableShowLiveDanmaku =
|
||||
plPlayerController.enableShowLiveDanmaku.value;
|
||||
plPlayerController.enableShowDanmaku.value;
|
||||
return SizedBox(
|
||||
width: 34,
|
||||
height: 34,
|
||||
@@ -801,8 +801,7 @@ class _LiveRoomPageState extends State<LiveRoomPage>
|
||||
),
|
||||
onPressed: () {
|
||||
final newVal = !enableShowLiveDanmaku;
|
||||
plPlayerController.enableShowLiveDanmaku.value =
|
||||
newVal;
|
||||
plPlayerController.enableShowDanmaku.value = newVal;
|
||||
if (!plPlayerController.tempPlayerConf) {
|
||||
GStorage.setting.put(
|
||||
SettingBoxKey.enableShowLiveDanmaku,
|
||||
@@ -1035,7 +1034,7 @@ class _LiveDanmakuState extends State<LiveDanmaku> {
|
||||
return Obx(
|
||||
() {
|
||||
return AnimatedOpacity(
|
||||
opacity: plPlayerController.enableShowLiveDanmaku.value
|
||||
opacity: plPlayerController.enableShowDanmaku.value
|
||||
? plPlayerController.danmakuOpacity.value
|
||||
: 0,
|
||||
duration: const Duration(milliseconds: 100),
|
||||
|
||||
@@ -75,7 +75,7 @@ class BottomControl extends StatelessWidget {
|
||||
Obx(
|
||||
() {
|
||||
final enableShowLiveDanmaku =
|
||||
plPlayerController.enableShowLiveDanmaku.value;
|
||||
plPlayerController.enableShowDanmaku.value;
|
||||
return ComBtn(
|
||||
tooltip: "${enableShowLiveDanmaku ? '关闭' : '开启'}弹幕",
|
||||
icon: enableShowLiveDanmaku
|
||||
@@ -91,7 +91,7 @@ class BottomControl extends StatelessWidget {
|
||||
),
|
||||
onTap: () {
|
||||
final newVal = !enableShowLiveDanmaku;
|
||||
plPlayerController.enableShowLiveDanmaku.value = newVal;
|
||||
plPlayerController.enableShowDanmaku.value = newVal;
|
||||
if (!plPlayerController.tempPlayerConf) {
|
||||
GStorage.setting.put(
|
||||
SettingBoxKey.enableShowLiveDanmaku,
|
||||
|
||||
@@ -2078,8 +2078,8 @@ class HeaderControlState extends State<HeaderControl> {
|
||||
}
|
||||
},
|
||||
icon: extra.isLike
|
||||
? const Icon(Icons.thumb_up_off_alt_sharp)
|
||||
: const Icon(Icons.thumb_up_off_alt_outlined),
|
||||
? const Icon(CustomIcons.player_dm_tip_like_solid)
|
||||
: const Icon(CustomIcons.player_dm_tip_like),
|
||||
),
|
||||
if (extra.like > 0)
|
||||
Positioned(
|
||||
@@ -2103,7 +2103,7 @@ class HeaderControlState extends State<HeaderControl> {
|
||||
extra.id,
|
||||
plPlayerController.cid!,
|
||||
),
|
||||
icon: const Icon(Icons.delete_outline),
|
||||
icon: const Icon(CustomIcons.player_dm_tip_recall),
|
||||
)
|
||||
else
|
||||
iconButton(
|
||||
@@ -2112,7 +2112,7 @@ class HeaderControlState extends State<HeaderControl> {
|
||||
extra: extra,
|
||||
ctr: plPlayerController,
|
||||
),
|
||||
icon: const Icon(Icons.report_problem_outlined),
|
||||
icon: const Icon(CustomIcons.player_dm_tip_back),
|
||||
),
|
||||
],
|
||||
),
|
||||
|
||||
@@ -167,18 +167,15 @@ class PlayerFocus extends StatelessWidget {
|
||||
return true;
|
||||
|
||||
case LogicalKeyboardKey.keyD:
|
||||
if (plPlayerController.isLive) {
|
||||
final newVal = !plPlayerController.enableShowLiveDanmaku.value;
|
||||
plPlayerController.enableShowLiveDanmaku.value = newVal;
|
||||
if (!plPlayerController.tempPlayerConf) {
|
||||
GStorage.setting.put(SettingBoxKey.enableShowLiveDanmaku, newVal);
|
||||
}
|
||||
} else {
|
||||
final newVal = !plPlayerController.enableShowDanmaku.value;
|
||||
plPlayerController.enableShowDanmaku.value = newVal;
|
||||
if (!plPlayerController.tempPlayerConf) {
|
||||
GStorage.setting.put(SettingBoxKey.enableShowDanmaku, newVal);
|
||||
}
|
||||
final newVal = !plPlayerController.enableShowDanmaku.value;
|
||||
plPlayerController.enableShowDanmaku.value = newVal;
|
||||
if (!plPlayerController.tempPlayerConf) {
|
||||
GStorage.setting.put(
|
||||
plPlayerController.isLive
|
||||
? SettingBoxKey.enableShowLiveDanmaku
|
||||
: SettingBoxKey.enableShowDanmaku,
|
||||
newVal,
|
||||
);
|
||||
}
|
||||
return true;
|
||||
|
||||
|
||||
@@ -246,8 +246,10 @@ class PlPlayerController {
|
||||
bool get isVertical => _isVertical;
|
||||
|
||||
/// 弹幕开关
|
||||
late final RxBool enableShowDanmaku = Pref.enableShowDanmaku.obs;
|
||||
late final RxBool enableShowLiveDanmaku = Pref.enableShowLiveDanmaku.obs;
|
||||
late final RxBool _enableShowDanmaku = Pref.enableShowDanmaku.obs;
|
||||
late final RxBool _enableShowLiveDanmaku = Pref.enableShowLiveDanmaku.obs;
|
||||
RxBool get enableShowDanmaku =>
|
||||
isLive ? _enableShowLiveDanmaku : _enableShowDanmaku;
|
||||
|
||||
late final bool autoPiP = Pref.autoPiP;
|
||||
bool get isPipMode =>
|
||||
|
||||
@@ -287,7 +287,6 @@ class _PLVideoPlayerState extends State<PLVideoPlayer>
|
||||
FlutterVolumeController.removeListener();
|
||||
}
|
||||
transformationController.dispose();
|
||||
_refreshDmCallback = null;
|
||||
_removeDmAction();
|
||||
super.dispose();
|
||||
}
|
||||
@@ -1130,22 +1129,23 @@ class _PLVideoPlayerState extends State<PLVideoPlayer>
|
||||
if (_suspendedDm == null) {
|
||||
plPlayerController.controls = !plPlayerController.showControls.value;
|
||||
} else {
|
||||
_dmOffset = details.localPosition;
|
||||
_refreshDmCallback?.call();
|
||||
_dmOffset.value = details.localPosition;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void _onTapDown(TapDownDetails details) {
|
||||
if (!plPlayerController.enableShowDanmaku.value) {
|
||||
_removeDmAction();
|
||||
return;
|
||||
}
|
||||
final ctr = plPlayerController.danmakuController;
|
||||
if (ctr != null) {
|
||||
final pos = details.localPosition;
|
||||
final item = ctr.findSingleDanmaku(pos);
|
||||
if (item == null) {
|
||||
if (_suspendedDm != null) {
|
||||
_removeDmAction();
|
||||
}
|
||||
_removeDmAction();
|
||||
} else if (item != _suspendedDm) {
|
||||
if (item.content.extra == null) {
|
||||
_removeDmAction();
|
||||
@@ -1153,7 +1153,6 @@ class _PLVideoPlayerState extends State<PLVideoPlayer>
|
||||
}
|
||||
_suspendedDm?.suspend = false;
|
||||
_suspendedDm = item..suspend = true;
|
||||
_dmOffset = pos;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1336,15 +1335,15 @@ class _PLVideoPlayerState extends State<PLVideoPlayer>
|
||||
),
|
||||
|
||||
if (plPlayerController.enableTapDm)
|
||||
Builder(
|
||||
builder: (context) {
|
||||
_refreshDmCallback = () {
|
||||
if (context.mounted) {
|
||||
((context) as Element).markNeedsBuild();
|
||||
}
|
||||
};
|
||||
if (_dmOffset != null && _suspendedDm != null) {
|
||||
return _buildDmAction(_suspendedDm!, _dmOffset!);
|
||||
Obx(
|
||||
() {
|
||||
if (!plPlayerController.enableShowDanmaku.value) {
|
||||
_removeDmAction();
|
||||
return const SizedBox.shrink();
|
||||
}
|
||||
final dmOffset = _dmOffset.value;
|
||||
if (dmOffset != null && _suspendedDm != null) {
|
||||
return _buildDmAction(_suspendedDm!, dmOffset);
|
||||
}
|
||||
return const SizedBox.shrink();
|
||||
},
|
||||
@@ -2200,14 +2199,14 @@ class _PLVideoPlayerState extends State<PLVideoPlayer>
|
||||
static const _actionItemHeight = 35.0 - _triangleHeight;
|
||||
|
||||
DanmakuItem<DanmakuExtra>? _suspendedDm;
|
||||
Offset? _dmOffset;
|
||||
void Function()? _refreshDmCallback;
|
||||
late final Rxn<Offset> _dmOffset = Rxn<Offset>();
|
||||
|
||||
void _removeDmAction() {
|
||||
_suspendedDm?.suspend = false;
|
||||
_suspendedDm = null;
|
||||
_dmOffset = null;
|
||||
_refreshDmCallback?.call();
|
||||
if (_suspendedDm != null) {
|
||||
_suspendedDm?.suspend = false;
|
||||
_suspendedDm = null;
|
||||
_dmOffset.value = null;
|
||||
}
|
||||
}
|
||||
|
||||
Widget _dmActionItem(
|
||||
|
||||
Reference in New Issue
Block a user