This commit is contained in:
mertalev 2026-04-01 22:57:41 -04:00
parent ee205930bd
commit b4cba1bb9b
No known key found for this signature in database
GPG Key ID: C50FA35C7B2CBAFB
2 changed files with 11 additions and 25 deletions

View File

@ -1,33 +1,19 @@
import 'package:flutter/material.dart';
class AspectRatioPreset {
enum AspectRatioPreset {
free(ratio: null, label: 'Free', icon: Icons.crop_free_rounded),
square(ratio: 1.0, label: '1:1', icon: Icons.crop_square_rounded),
ratio16x9(ratio: 16 / 9, label: '16:9', icon: Icons.crop_16_9_rounded),
ratio3x2(ratio: 3 / 2, label: '3:2', icon: Icons.crop_3_2_rounded),
ratio7x5(ratio: 7 / 5, label: '7:5', icon: Icons.crop_7_5_rounded),
ratio9x16(ratio: 9 / 16, label: '9:16', icon: Icons.crop_16_9_rounded, iconRotated: true),
ratio2x3(ratio: 2 / 3, label: '2:3', icon: Icons.crop_3_2_rounded, iconRotated: true),
ratio5x7(ratio: 5 / 7, label: '5:7', icon: Icons.crop_7_5_rounded, iconRotated: true);
final double? ratio;
final String label;
final IconData icon;
final bool iconRotated;
const AspectRatioPreset({required this.ratio, required this.label, required this.icon, this.iconRotated = false});
@override
bool operator ==(Object other) {
if (identical(this, other)) return true;
if (other is AspectRatioPreset) {
return ratio == other.ratio && label == other.label;
}
return false;
}
@override
int get hashCode => ratio.hashCode ^ label.hashCode;
}
const aspectRatios = [
AspectRatioPreset(ratio: null, label: 'Free', icon: Icons.crop_free_rounded),
AspectRatioPreset(ratio: 1.0, label: '1:1', icon: Icons.crop_square_rounded),
AspectRatioPreset(ratio: 16 / 9, label: '16:9', icon: Icons.crop_16_9_rounded),
AspectRatioPreset(ratio: 3 / 2, label: '3:2', icon: Icons.crop_3_2_rounded),
AspectRatioPreset(ratio: 7 / 5, label: '7:5', icon: Icons.crop_7_5_rounded),
AspectRatioPreset(ratio: 9 / 16, label: '9:16', icon: Icons.crop_16_9_rounded, iconRotated: true),
AspectRatioPreset(ratio: 2 / 3, label: '2:3', icon: Icons.crop_3_2_rounded, iconRotated: true),
AspectRatioPreset(ratio: 5 / 7, label: '5:7', icon: Icons.crop_7_5_rounded, iconRotated: true),
];

View File

@ -382,7 +382,7 @@ class _AspectRatioSelector extends StatelessWidget {
return SingleChildScrollView(
scrollDirection: Axis.horizontal,
child: Row(
children: aspectRatios.map((entry) {
children: AspectRatioPreset.values.map((entry) {
return Padding(
padding: const EdgeInsets.symmetric(horizontal: 8.0),
child: _AspectRatioButton(