mirror of
https://github.com/wgh136/pixes.git
synced 2025-09-27 12:57:24 +00:00
36 lines
1.0 KiB
Dart
36 lines
1.0 KiB
Dart
import 'package:flutter/widgets.dart';
|
|
|
|
class SliverGridViewWithFixedItemHeight extends StatelessWidget {
|
|
const SliverGridViewWithFixedItemHeight(
|
|
{required this.delegate,
|
|
required this.maxCrossAxisExtent,
|
|
required this.itemHeight,
|
|
super.key});
|
|
|
|
final SliverChildDelegate delegate;
|
|
|
|
final double maxCrossAxisExtent;
|
|
|
|
final double itemHeight;
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return SliverLayoutBuilder(
|
|
builder: ((context, constraints) => SliverGrid(
|
|
delegate: delegate,
|
|
gridDelegate: SliverGridDelegateWithMaxCrossAxisExtent(
|
|
maxCrossAxisExtent: maxCrossAxisExtent,
|
|
childAspectRatio:
|
|
calcChildAspectRatio(constraints.crossAxisExtent)),
|
|
)));
|
|
}
|
|
|
|
double calcChildAspectRatio(double width) {
|
|
var crossItems = width ~/ maxCrossAxisExtent;
|
|
if (width % maxCrossAxisExtent != 0) {
|
|
crossItems += 1;
|
|
}
|
|
final itemWidth = width / crossItems;
|
|
return itemWidth / itemHeight;
|
|
}
|
|
} |