Signed-off-by: dom <githubaccount56556@proton.me>
This commit is contained in:
dom
2026-05-14 12:13:17 +08:00
parent 025775d231
commit 09be4f45f0
78 changed files with 428 additions and 849 deletions

View File

@@ -19,7 +19,6 @@ import 'package:PiliPlus/utils/id_utils.dart';
import 'package:PiliPlus/utils/page_utils.dart';
import 'package:PiliPlus/utils/request_utils.dart';
import 'package:PiliPlus/utils/url_utils.dart';
import 'package:PiliPlus/utils/utils.dart';
import 'package:app_links/app_links.dart';
import 'package:flutter/foundation.dart' show kDebugMode;
import 'package:flutter/material.dart';
@@ -306,10 +305,7 @@ abstract final class PiliScheme {
if (mediaId != null) {
PageUtils.toDupNamed(
'/favDetail',
parameters: {
'mediaId': mediaId,
'heroTag': Utils.makeHeroTag(mediaId),
},
parameters: {'mediaId': mediaId},
off: off,
);
return true;
@@ -387,10 +383,7 @@ abstract final class PiliScheme {
if (mediaId != null) {
Get.toNamed(
'/favDetail',
parameters: {
'mediaId': mediaId,
'heroTag': Utils.makeHeroTag(mediaId),
},
parameters: {'mediaId': mediaId},
);
return true;
}
@@ -731,10 +724,7 @@ abstract final class PiliScheme {
if (mediaId != null) {
PageUtils.toDupNamed(
'/favDetail',
parameters: {
'mediaId': mediaId,
'heroTag': Utils.makeHeroTag(mediaId),
},
parameters: {'mediaId': mediaId},
off: off,
);
return true;

View File

@@ -1,13 +1,12 @@
import 'dart:math';
import 'package:PiliPlus/common/skeleton/video_card_h.dart';
import 'package:PiliPlus/common/style.dart';
import 'package:PiliPlus/utils/storage_pref.dart';
import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';
mixin GridMixin<T extends StatefulWidget> on State<T> {
late final gridDelegate = Grid.videoCardHDelegate(context);
mixin GridMixin {
late final gridDelegate = Grid.videoCardHDelegate();
Widget get gridSkeleton => SliverGrid.builder(
gridDelegate: gridDelegate,
@@ -19,15 +18,12 @@ mixin GridMixin<T extends StatefulWidget> on State<T> {
abstract final class Grid {
static final double smallCardWidth = Pref.smallCardWidth;
static SliverGridDelegateWithExtentAndRatio videoCardHDelegate(
BuildContext context, {
double minHeight = 90,
}) => SliverGridDelegateWithExtentAndRatio(
mainAxisSpacing: 2,
maxCrossAxisExtent: Grid.smallCardWidth * 2,
childAspectRatio: Style.aspectRatio * 2.2,
minHeight: MediaQuery.textScalerOf(context).scale(minHeight),
);
static SliverGridDelegateWithMaxCrossAxisExtent videoCardHDelegate() =>
SliverGridDelegateWithMaxCrossAxisExtent(
mainAxisSpacing: 2,
mainAxisExtent: 110,
maxCrossAxisExtent: Grid.smallCardWidth * 2,
);
}
class SliverGridDelegateWithExtentAndRatio extends SliverGridDelegate {
@@ -43,14 +39,10 @@ class SliverGridDelegateWithExtentAndRatio extends SliverGridDelegate {
this.crossAxisSpacing = 0.0,
this.childAspectRatio = 1.0,
this.mainAxisExtent = 0.0,
this.minHeight = 0.0,
}) : assert(maxCrossAxisExtent > 0),
assert(mainAxisSpacing >= 0),
assert(crossAxisSpacing >= 0),
assert(childAspectRatio > 0),
assert(minHeight >= 0);
final double minHeight;
assert(childAspectRatio > 0);
/// The maximum extent of tiles in the cross axis.
///
@@ -111,10 +103,8 @@ class SliverGridDelegateWithExtentAndRatio extends SliverGridDelegate {
constraints.crossAxisExtent - crossAxisSpacing * (crossAxisCount - 1),
);
final double childCrossAxisExtent = usableCrossAxisExtent / crossAxisCount;
final double childMainAxisExtent = max(
minHeight,
childCrossAxisExtent / childAspectRatio + mainAxisExtent,
);
final double childMainAxisExtent =
childCrossAxisExtent / childAspectRatio + mainAxisExtent;
return layoutCache = SliverGridRegularTileLayout(
crossAxisCount: crossAxisCount,
mainAxisStride: childMainAxisExtent + mainAxisSpacing,

View File

@@ -357,10 +357,7 @@ abstract final class PageUtils {
if (url.contains('medialist/detail/ml')) {
Get.toNamed(
'/favDetail',
parameters: {
'heroTag': '${medialist.cover}',
'mediaId': '${medialist.id}',
},
parameters: {'mediaId': '${medialist.id}'},
);
} else {
PiliScheme.routePushFromUrl(url.http2https);