mirror of
https://github.com/HChaZZY/PiliPlus.git
synced 2025-12-06 09:13:48 +08:00
mod: sync flip/onlyPlayAudio from orz12/main
Closes #100 Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
@@ -165,6 +165,9 @@ class _VideoInfoState extends State<VideoInfo> with TickerProviderStateMixin {
|
||||
Icons.shield_outlined,
|
||||
size:
|
||||
MediaQuery.textScalerOf(context).scale(16),
|
||||
color: Theme.of(context)
|
||||
.colorScheme
|
||||
.onSecondaryContainer,
|
||||
),
|
||||
Icon(
|
||||
Icons.play_arrow_rounded,
|
||||
|
||||
@@ -99,20 +99,24 @@ class MenuRow extends StatelessWidget {
|
||||
class ActionRowLineItem extends StatelessWidget {
|
||||
const ActionRowLineItem({
|
||||
super.key,
|
||||
this.selectStatus,
|
||||
required this.selectStatus,
|
||||
this.onTap,
|
||||
this.text,
|
||||
this.loadingStatus = false,
|
||||
this.iconData,
|
||||
this.icon,
|
||||
});
|
||||
final bool? selectStatus;
|
||||
final bool selectStatus;
|
||||
final Function? onTap;
|
||||
final bool? loadingStatus;
|
||||
final String? text;
|
||||
final IconData? iconData;
|
||||
final Widget? icon;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Material(
|
||||
color: selectStatus!
|
||||
color: selectStatus
|
||||
? Theme.of(context).colorScheme.secondaryContainer
|
||||
: Colors.transparent,
|
||||
borderRadius: const BorderRadius.all(Radius.circular(30)),
|
||||
@@ -127,7 +131,7 @@ class ActionRowLineItem extends StatelessWidget {
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: const BorderRadius.all(Radius.circular(30)),
|
||||
border: Border.all(
|
||||
color: selectStatus!
|
||||
color: selectStatus
|
||||
? Colors.transparent
|
||||
: Theme.of(context).colorScheme.secondaryContainer,
|
||||
),
|
||||
@@ -135,6 +139,16 @@ class ActionRowLineItem extends StatelessWidget {
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: [
|
||||
if (iconData != null)
|
||||
Icon(
|
||||
iconData,
|
||||
size: 13,
|
||||
color: selectStatus
|
||||
? Theme.of(context).colorScheme.onSecondaryContainer
|
||||
: Theme.of(context).colorScheme.outline,
|
||||
)
|
||||
else if (icon != null)
|
||||
icon!,
|
||||
AnimatedOpacity(
|
||||
opacity: loadingStatus! ? 0 : 1,
|
||||
duration: const Duration(milliseconds: 200),
|
||||
@@ -142,7 +156,7 @@ class ActionRowLineItem extends StatelessWidget {
|
||||
text!,
|
||||
style: TextStyle(
|
||||
fontSize: 13,
|
||||
color: selectStatus!
|
||||
color: selectStatus
|
||||
? Theme.of(context).colorScheme.onSecondaryContainer
|
||||
: Theme.of(context).colorScheme.outline),
|
||||
),
|
||||
|
||||
@@ -2,6 +2,7 @@ import 'dart:async';
|
||||
import 'dart:io';
|
||||
import 'dart:math';
|
||||
|
||||
import 'package:PiliPalaX/common/widgets/self_sized_horizontal_list.dart';
|
||||
import 'package:PiliPalaX/pages/setting/widgets/switch_item.dart';
|
||||
import 'package:PiliPalaX/utils/extension.dart';
|
||||
import 'package:PiliPalaX/utils/id_utils.dart';
|
||||
@@ -230,24 +231,71 @@ class _HeaderControlState extends State<HeaderControl> {
|
||||
}
|
||||
},
|
||||
),
|
||||
ListTile(
|
||||
dense: true,
|
||||
onTap: () {
|
||||
Get.back();
|
||||
Player? player =
|
||||
widget.controller.videoPlayerController;
|
||||
if (player == null) {
|
||||
SmartDialog.showToast('播放器未初始化');
|
||||
return;
|
||||
}
|
||||
var pp = player.platform as NativePlayer;
|
||||
pp.setProperty("video", "no");
|
||||
SelfSizedHorizontalList(
|
||||
itemCount: 4,
|
||||
gapSize: 10,
|
||||
padding: const EdgeInsets.symmetric(horizontal: 16),
|
||||
childBuilder: (index) {
|
||||
return switch (index) {
|
||||
0 => Obx(
|
||||
() => ActionRowLineItem(
|
||||
iconData: Icons.flip,
|
||||
onTap: () {
|
||||
widget.controller.flipX.value =
|
||||
!widget.controller.flipX.value;
|
||||
},
|
||||
text: " 左右翻转 ",
|
||||
selectStatus: widget.controller.flipX.value,
|
||||
),
|
||||
),
|
||||
1 => Obx(
|
||||
() => ActionRowLineItem(
|
||||
icon: Transform.rotate(
|
||||
angle: pi / 2,
|
||||
child: Icon(
|
||||
Icons.flip,
|
||||
size: 13,
|
||||
color: widget.controller.flipY.value
|
||||
? Theme.of(context)
|
||||
.colorScheme
|
||||
.onSecondaryContainer
|
||||
: Theme.of(context)
|
||||
.colorScheme
|
||||
.outline,
|
||||
),
|
||||
),
|
||||
onTap: () {
|
||||
widget.controller.flipY.value =
|
||||
!widget.controller.flipY.value;
|
||||
},
|
||||
text: " 上下翻转 ",
|
||||
selectStatus: widget.controller.flipY.value,
|
||||
),
|
||||
),
|
||||
2 => Obx(
|
||||
() => ActionRowLineItem(
|
||||
iconData: Icons.headphones,
|
||||
onTap: widget.controller.setOnlyPlayAudio,
|
||||
text: " 听视频 ",
|
||||
selectStatus:
|
||||
widget.controller.onlyPlayAudio.value,
|
||||
),
|
||||
),
|
||||
3 => Obx(
|
||||
() => ActionRowLineItem(
|
||||
iconData: Icons.play_circle_outline,
|
||||
onTap: widget
|
||||
.controller.setContinuePlayInBackground,
|
||||
text: " 后台播放 ",
|
||||
selectStatus: widget.controller
|
||||
.continuePlayInBackground.value,
|
||||
),
|
||||
),
|
||||
int() => throw UnimplementedError(),
|
||||
};
|
||||
},
|
||||
leading:
|
||||
const Icon(Icons.headphones_outlined, size: 20),
|
||||
title: const Text('听视频(需返回首页才能终止该状态)',
|
||||
style: titleStyle),
|
||||
),
|
||||
|
||||
ListTile(
|
||||
dense: true,
|
||||
onTap: () => {Get.back(), showSetVideoQa()},
|
||||
|
||||
Reference in New Issue
Block a user