Files
mobile/lib/core/widgets/machine_grid_layout.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,
);
}
}