32 lines
934 B
Dart
32 lines
934 B
Dart
import 'package:flutter/material.dart';
|
|
|
|
/// Grille responsive pour les cartes machines (téléphone → tablette).
|
|
abstract final class MachineGridLayout {
|
|
static const _minTileWidth = 155.0;
|
|
static const _maxTileWidth = 190.0;
|
|
|
|
static SliverGridDelegate delegate(BuildContext context) {
|
|
final width = MediaQuery.sizeOf(context).width;
|
|
const padding = 32.0;
|
|
final available = width - padding;
|
|
|
|
if (available > _maxTileWidth * 3) {
|
|
return const SliverGridDelegateWithMaxCrossAxisExtent(
|
|
maxCrossAxisExtent: _maxTileWidth,
|
|
mainAxisSpacing: 10,
|
|
crossAxisSpacing: 10,
|
|
childAspectRatio: 0.88,
|
|
);
|
|
}
|
|
|
|
final count = (available / _minTileWidth).floor().clamp(2, 3);
|
|
|
|
return SliverGridDelegateWithFixedCrossAxisCount(
|
|
crossAxisCount: count,
|
|
mainAxisSpacing: 10,
|
|
crossAxisSpacing: 10,
|
|
childAspectRatio: count >= 3 ? 0.85 : 0.92,
|
|
);
|
|
}
|
|
}
|