Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
bggRGjQaUbCoE
2025-11-23 10:33:16 +08:00
parent c4aca389a8
commit ad2bc78ebd
7 changed files with 34 additions and 19 deletions

View File

@@ -273,7 +273,9 @@ class VideoDetailController extends GetxController
late final watchProgress = GStorage.watchProgress;
void cacheLocalProgress() {
if (playedTime case final playedTime?) {
if (plPlayerController.playerStatus.completed) {
watchProgress.put(cid.value.toString(), entry.totalTimeMilli);
} else if (playedTime case final playedTime?) {
watchProgress.put(cid.value.toString(), playedTime.inMilliseconds);
}
}

View File

@@ -190,10 +190,10 @@ class _HorizontalMemberPageState extends State<HorizontalMemberPage> {
LoadingState<List<SpaceArchiveItem>?> loadingState,
) {
return switch (loadingState) {
Loading() => SliverPrototypeExtentList.builder(
Loading() => SliverFixedExtentList.builder(
itemCount: 10,
itemBuilder: (_, _) => const VideoCardHSkeleton(),
prototypeItem: const VideoCardHSkeleton(),
itemExtent: 100,
),
Success(:var response) =>
response?.isNotEmpty == true

View File

@@ -1028,12 +1028,19 @@ class ReplyItemGrpc extends StatelessWidget {
context: context,
builder: (context) {
return Dialog(
constraints: const BoxConstraints(
minWidth: 280,
maxWidth: 425,
),
child: Padding(
padding: const EdgeInsets.symmetric(
horizontal: 20,
vertical: 16,
),
child: SelectableText(message),
child: SelectableText(
message,
style: const TextStyle(fontSize: 15, height: 1.7),
),
),
);
},

View File

@@ -62,6 +62,7 @@ import 'package:material_design_icons_flutter/material_design_icons_flutter.dart
mixin TimeBatteryMixin<T extends StatefulWidget> on State<T> {
PlPlayerController get plPlayerController;
late final titleKey = GlobalKey();
ContextSingleTicker? provider;
ContextSingleTicker get effectiveProvider => provider ??= ContextSingleTicker(
context,
@@ -1422,7 +1423,10 @@ class HeaderControlState extends State<HeaderControl>
return AlertDialog(
title: const Text('播放信息'),
contentPadding: const EdgeInsets.only(top: 16),
constraints: const BoxConstraints(maxWidth: 425),
constraints: const BoxConstraints(
minWidth: 280,
maxWidth: 425,
),
content: Material(
type: MaterialType.transparency,
child: ListTileTheme(
@@ -2417,7 +2421,6 @@ class HeaderControlState extends State<HeaderControl>
);
}
late final _titleKey = GlobalKey();
late final isFileSource = videoDetailCtr.isFileSource;
@override
@@ -2452,7 +2455,7 @@ class HeaderControlState extends State<HeaderControl>
videoDetail.title!;
}
return MarqueeText(
key: _titleKey,
key: titleKey,
title,
spacing: 30,
velocity: 30,