mirror of
https://github.com/immich-app/immich.git
synced 2026-05-18 03:10:24 +03:00
refactor(mobile): unify padding metrics in thumbnail tile widget
This commit is contained in:
@@ -80,10 +80,7 @@ class ThumbnailTile extends ConsumerWidget {
|
|||||||
Align(
|
Align(
|
||||||
alignment: Alignment.topRight,
|
alignment: Alignment.topRight,
|
||||||
child: Padding(
|
child: Padding(
|
||||||
padding: EdgeInsets.symmetric(
|
padding: EdgeInsets.symmetric(horizontal: metrics.padding, vertical: metrics.padding),
|
||||||
horizontal: metrics.horizontalPadding,
|
|
||||||
vertical: metrics.verticalPadding,
|
|
||||||
),
|
|
||||||
child: Row(
|
child: Row(
|
||||||
mainAxisAlignment: MainAxisAlignment.end,
|
mainAxisAlignment: MainAxisAlignment.end,
|
||||||
crossAxisAlignment: CrossAxisAlignment.center,
|
crossAxisAlignment: CrossAxisAlignment.center,
|
||||||
@@ -97,10 +94,7 @@ class ThumbnailTile extends ConsumerWidget {
|
|||||||
Align(
|
Align(
|
||||||
alignment: Alignment.bottomCenter,
|
alignment: Alignment.bottomCenter,
|
||||||
child: Padding(
|
child: Padding(
|
||||||
padding: EdgeInsets.symmetric(
|
padding: EdgeInsets.symmetric(horizontal: metrics.padding, vertical: metrics.padding),
|
||||||
horizontal: metrics.horizontalPadding,
|
|
||||||
vertical: metrics.verticalPadding,
|
|
||||||
),
|
|
||||||
child: Row(
|
child: Row(
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
crossAxisAlignment: CrossAxisAlignment.center,
|
crossAxisAlignment: CrossAxisAlignment.center,
|
||||||
@@ -301,16 +295,14 @@ class _OwnerNameLabel extends StatelessWidget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class _OverlayMetrics {
|
class _OverlayMetrics {
|
||||||
final double horizontalPadding;
|
final double padding;
|
||||||
final double verticalPadding;
|
|
||||||
final double iconSize;
|
final double iconSize;
|
||||||
final double fontSize;
|
final double fontSize;
|
||||||
final double iconSpacing;
|
final double iconSpacing;
|
||||||
final double blurRadius;
|
final double blurRadius;
|
||||||
|
|
||||||
const _OverlayMetrics({
|
const _OverlayMetrics({
|
||||||
required this.horizontalPadding,
|
required this.padding,
|
||||||
required this.verticalPadding,
|
|
||||||
required this.iconSize,
|
required this.iconSize,
|
||||||
required this.fontSize,
|
required this.fontSize,
|
||||||
required this.iconSpacing,
|
required this.iconSpacing,
|
||||||
@@ -318,45 +310,15 @@ class _OverlayMetrics {
|
|||||||
});
|
});
|
||||||
|
|
||||||
factory _OverlayMetrics.fromConstraints(BoxConstraints constraints) {
|
factory _OverlayMetrics.fromConstraints(BoxConstraints constraints) {
|
||||||
final tileSize = constraints.maxWidth;
|
const baseSize = 120.0;
|
||||||
|
final scale = (constraints.maxWidth / baseSize).clamp(0.5, 2.0);
|
||||||
|
|
||||||
if (tileSize < 80) {
|
return _OverlayMetrics(
|
||||||
return const _OverlayMetrics(
|
padding: (2.0 * scale).clamp(1.0, 4.0),
|
||||||
horizontalPadding: 1.0,
|
iconSize: (16.0 * scale).clamp(14.0, 20.0),
|
||||||
verticalPadding: 1.0,
|
fontSize: (12.0 * scale).clamp(11.0, 14.0),
|
||||||
iconSize: 14,
|
iconSpacing: (2.0 * scale).clamp(1.0, 4.0),
|
||||||
fontSize: 11,
|
blurRadius: (5.0 * scale).clamp(3.0, 7.0),
|
||||||
iconSpacing: 1.0,
|
|
||||||
blurRadius: 3.0,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
if (tileSize < 120) {
|
|
||||||
return const _OverlayMetrics(
|
|
||||||
horizontalPadding: 2.0,
|
|
||||||
verticalPadding: 2.0,
|
|
||||||
iconSize: 16,
|
|
||||||
fontSize: 12,
|
|
||||||
iconSpacing: 2.0,
|
|
||||||
blurRadius: 5.0,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
if (tileSize < 180) {
|
|
||||||
return const _OverlayMetrics(
|
|
||||||
horizontalPadding: 3.0,
|
|
||||||
verticalPadding: 3.0,
|
|
||||||
iconSize: 18,
|
|
||||||
fontSize: 13,
|
|
||||||
iconSpacing: 3.0,
|
|
||||||
blurRadius: 6.0,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
return const _OverlayMetrics(
|
|
||||||
horizontalPadding: 4.0,
|
|
||||||
verticalPadding: 4.0,
|
|
||||||
iconSize: 20,
|
|
||||||
fontSize: 14,
|
|
||||||
iconSpacing: 4.0,
|
|
||||||
blurRadius: 7.0,
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user