mirror of
https://github.com/bggRGjQaUbCoE/PiliPlus.git
synced 2026-05-16 14:14:01 +08:00
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user