opt: video: check title width

Closes #206

Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
bggRGjQaUbCoE
2025-03-06 11:32:26 +08:00
parent 86678ec15a
commit b5c7ed1c34

View File

@@ -95,18 +95,6 @@ class _HeaderControlState extends State<HeaderControl> {
super.dispose(); super.dispose();
} }
@override
void didChangeDependencies() {
super.didChangeDependencies();
if (MediaQuery.of(context).orientation == Orientation.landscape &&
(isFullScreen || !horizontalScreen)) {
startClock();
} else {
clock?.cancel();
clock = null;
}
}
/// 设置面板 /// 设置面板
void showSettingSheet() { void showSettingSheet() {
Utils.showFSSheet( Utils.showFSSheet(
@@ -1820,18 +1808,35 @@ class _HeaderControlState extends State<HeaderControl> {
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
ConstrainedBox( LayoutBuilder(
builder: (context, constraints) {
return Obx(
() {
final textPainter = TextPainter(
text: TextSpan(
text: videoIntroController
.videoDetail.value.title!,
style: const TextStyle(
color: Colors.white,
fontSize: 16,
),
),
textDirection: TextDirection.ltr,
maxLines: 1,
)..layout(maxWidth: constraints.maxWidth);
if (textPainter.didExceedMaxLines) {
return ConstrainedBox(
constraints: BoxConstraints(maxHeight: 25), constraints: BoxConstraints(maxHeight: 25),
child: Obx( child: Marquee(
() => Marquee( text: videoIntroController
text: .videoDetail.value.title!,
videoIntroController.videoDetail.value.title!,
style: const TextStyle( style: const TextStyle(
color: Colors.white, color: Colors.white,
fontSize: 16, fontSize: 16,
), ),
scrollAxis: Axis.horizontal, scrollAxis: Axis.horizontal,
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment:
CrossAxisAlignment.start,
blankSpace: 200, blankSpace: 200,
velocity: 40, velocity: 40,
startAfter: const Duration(seconds: 1), startAfter: const Duration(seconds: 1),
@@ -1840,13 +1845,29 @@ class _HeaderControlState extends State<HeaderControl> {
fadingEdgeEndFraction: 0.1, fadingEdgeEndFraction: 0.1,
numberOfRounds: 1, numberOfRounds: 1,
startPadding: 0, startPadding: 0,
accelerationDuration: const Duration(seconds: 1), accelerationDuration:
const Duration(seconds: 1),
accelerationCurve: Curves.linear, accelerationCurve: Curves.linear,
decelerationDuration: decelerationDuration:
const Duration(milliseconds: 500), const Duration(milliseconds: 500),
decelerationCurve: Curves.easeOut, decelerationCurve: Curves.easeOut,
), ),
);
} else {
return Text(
videoIntroController
.videoDetail.value.title!,
style: const TextStyle(
color: Colors.white,
fontSize: 16,
), ),
maxLines: 1,
textDirection: TextDirection.ltr,
);
}
},
);
},
), ),
if (videoIntroController.isShowOnlineTotal) if (videoIntroController.isShowOnlineTotal)
Obx( Obx(
@@ -1863,22 +1884,26 @@ class _HeaderControlState extends State<HeaderControl> {
) )
else else
const Spacer(), const Spacer(),
if (MediaQuery.of(context).orientation ==
Orientation.landscape &&
(isFullScreen || !horizontalScreen)) ...[
// const Spacer(),
// show current datetime // show current datetime
Obx( Obx(
() => Text( () {
if (MediaQuery.of(context).orientation ==
Orientation.landscape &&
(isFullScreen || !horizontalScreen)) {
startClock();
return Text(
now.value, now.value,
style: const TextStyle( style: const TextStyle(
color: Colors.white, color: Colors.white,
fontSize: 13, fontSize: 13,
), ),
);
}
clock?.cancel();
clock = null;
return SizedBox.shrink();
},
), ),
),
const SizedBox(width: 15),
],
// ComBtn( // ComBtn(
// icon: const Icon( // icon: const Icon(
// FontAwesomeIcons.cropSimple, // FontAwesomeIcons.cropSimple,