mirror of
https://github.com/bggRGjQaUbCoE/PiliPlus.git
synced 2026-06-22 02:03:58 +08:00
@@ -118,6 +118,7 @@ class VideoPopupMenu extends StatelessWidget {
|
||||
return Dialog(
|
||||
child: ConstrainedBox(
|
||||
constraints: const BoxConstraints(
|
||||
minWidth: 280,
|
||||
maxWidth: 420,
|
||||
),
|
||||
child: Padding(
|
||||
|
||||
@@ -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,
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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),
|
||||
),
|
||||
),
|
||||
);
|
||||
},
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user