Files
sm-emby-share/lib/shared/widgets/media_row_metrics.dart
T

59 lines
1.9 KiB
Dart
Raw Normal View History

2026-07-14 11:11:36 +08:00
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,
};
}
}