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

@@ -118,6 +118,7 @@ class VideoPopupMenu extends StatelessWidget {
return Dialog(
child: ConstrainedBox(
constraints: const BoxConstraints(
minWidth: 280,
maxWidth: 420,
),
child: Padding(

View File

@@ -436,18 +436,19 @@ Future showVoteDialog(
showDialog(
context: context,
builder: (context) => Dialog(
child: ConstrainedBox(
constraints: const BoxConstraints(maxWidth: 625),
child: Padding(
padding: const EdgeInsets.all(24),
child: VotePanel(
voteInfo: voteInfo.data,
callback: (votes, anonymity) => DynamicsHttp.doVote(
voteId: voteId,
votes: votes.toList(),
anonymity: anonymity,
dynamicId: dynamicId,
),
constraints: const BoxConstraints(
minWidth: 280,
maxWidth: 625,
),
child: Padding(
padding: const EdgeInsets.all(24),
child: VotePanel(
voteInfo: voteInfo.data,
callback: (votes, anonymity) => DynamicsHttp.doVote(
voteId: voteId,
votes: votes.toList(),
anonymity: anonymity,
dynamicId: dynamicId,
),
),
),

View File

@@ -54,6 +54,7 @@ class _LiveHeaderControlState extends State<LiveHeaderControl>
Widget child;
if (widget.title case final title?) {
child = MarqueeText(
key: titleKey,
title,
spacing: 30,
velocity: 30,

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,