屏幕适配

This commit is contained in:
2026-06-04 14:34:46 +08:00
parent 02c1c87b46
commit 5ddcb95358
17 changed files with 286 additions and 126 deletions

View File

@@ -1,4 +1,5 @@
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
enum AppButtonVariant { primary, secondary, outline, text, danger }
@@ -11,7 +12,7 @@ class AppButton extends StatelessWidget {
this.variant = AppButtonVariant.primary,
this.isLoading = false,
this.expand = false,
this.height = 44,
this.height,
});
final String label;
@@ -20,7 +21,7 @@ class AppButton extends StatelessWidget {
final AppButtonVariant variant;
final bool isLoading;
final bool expand;
final double height;
final double? height;
@override
Widget build(BuildContext context) {
@@ -30,7 +31,7 @@ class AppButton extends StatelessWidget {
isLoading: isLoading,
);
final enabled = isLoading ? null : onPressed;
final size = Size(expand ? double.infinity : 0, height);
final size = Size(expand ? double.infinity : 0, height ?? 44.h);
return switch (variant) {
AppButtonVariant.primary => ElevatedButton(
@@ -79,9 +80,9 @@ class _ButtonContent extends StatelessWidget {
@override
Widget build(BuildContext context) {
if (isLoading) {
return const SizedBox.square(
dimension: 18,
child: CircularProgressIndicator(strokeWidth: 2),
return SizedBox.square(
dimension: 18.r,
child: CircularProgressIndicator(strokeWidth: 2.r),
);
}
@@ -92,7 +93,7 @@ class _ButtonContent extends StatelessWidget {
mainAxisAlignment: MainAxisAlignment.center,
children: [
icon!,
const SizedBox(width: 8),
SizedBox(width: 8.w),
Flexible(child: Text(label, overflow: TextOverflow.ellipsis)),
],
);