59 lines
1.9 KiB
Dart
59 lines
1.9 KiB
Dart
|
|
import 'dart:io' show Platform;
|
||
|
|
|
||
|
|
import 'package:flutter/widgets.dart';
|
||
|
|
|
||
|
|
import '../constants/breakpoints.dart';
|
||
|
|
import 'media_poster_card.dart';
|
||
|
|
|
||
|
|
abstract final class MediaRowMetrics {
|
||
|
|
static const landscapeCompactWidth = 185.0;
|
||
|
|
static const landscapeExpandedWidth = 232.0;
|
||
|
|
static const posterCompactWidth = 130.0;
|
||
|
|
static const posterExpandedWidth = 158.0;
|
||
|
|
|
||
|
|
static const landscapeCompactHeight = 171.0;
|
||
|
|
static const landscapeExpandedHeight = 214.0;
|
||
|
|
static const posterCompactHeight = 250.0;
|
||
|
|
static const posterExpandedHeight = 304.0;
|
||
|
|
|
||
|
|
static const _landscapeAndroidWidth = 148.0;
|
||
|
|
static const _posterAndroidWidth = 110.0;
|
||
|
|
static const _landscapeAndroidHeight = 137.0;
|
||
|
|
static const _posterAndroidHeight = 211.0;
|
||
|
|
|
||
|
|
static final bool _isAndroid = Platform.isAndroid;
|
||
|
|
|
||
|
|
static bool isCompact(BuildContext context) =>
|
||
|
|
Breakpoints.isCompact(MediaQuery.sizeOf(context).width);
|
||
|
|
|
||
|
|
static double cardWidth(MediaCardVariant variant, {required bool compact}) {
|
||
|
|
if (compact && _isAndroid) {
|
||
|
|
return switch (variant) {
|
||
|
|
MediaCardVariant.landscape => _landscapeAndroidWidth,
|
||
|
|
MediaCardVariant.poster => _posterAndroidWidth,
|
||
|
|
};
|
||
|
|
}
|
||
|
|
return switch (variant) {
|
||
|
|
MediaCardVariant.landscape =>
|
||
|
|
compact ? landscapeCompactWidth : landscapeExpandedWidth,
|
||
|
|
MediaCardVariant.poster =>
|
||
|
|
compact ? posterCompactWidth : posterExpandedWidth,
|
||
|
|
};
|
||
|
|
}
|
||
|
|
|
||
|
|
static double rowHeight(MediaCardVariant variant, {required bool compact}) {
|
||
|
|
if (compact && _isAndroid) {
|
||
|
|
return switch (variant) {
|
||
|
|
MediaCardVariant.landscape => _landscapeAndroidHeight,
|
||
|
|
MediaCardVariant.poster => _posterAndroidHeight,
|
||
|
|
};
|
||
|
|
}
|
||
|
|
return switch (variant) {
|
||
|
|
MediaCardVariant.landscape =>
|
||
|
|
compact ? landscapeCompactHeight : landscapeExpandedHeight,
|
||
|
|
MediaCardVariant.poster =>
|
||
|
|
compact ? posterCompactHeight : posterExpandedHeight,
|
||
|
|
};
|
||
|
|
}
|
||
|
|
}
|