Files
record-tool/lib/app/theme/app_theme.dart
2026-06-04 14:34:46 +08:00

82 lines
2.3 KiB
Dart

import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
class AppTheme {
AppTheme._();
static const seedColor = Color(0xFF2563EB);
static const background = Color(0xFFF6F7FB);
static const surface = Colors.white;
static const textPrimary = Color(0xFF111827);
static const textSecondary = Color(0xFF6B7280);
static const border = Color(0xFFE5E7EB);
static const success = Color(0xFF16A34A);
static const warning = Color(0xFFF59E0B);
static const danger = Color(0xFFDC2626);
static ThemeData get light {
final scheme = ColorScheme.fromSeed(
seedColor: seedColor,
brightness: Brightness.light,
surface: surface,
);
return ThemeData(
useMaterial3: true,
colorScheme: scheme,
scaffoldBackgroundColor: background,
appBarTheme: const AppBarTheme(
centerTitle: true,
elevation: 0,
scrolledUnderElevation: 0,
backgroundColor: surface,
foregroundColor: textPrimary,
),
elevatedButtonTheme: ElevatedButtonThemeData(
style: ElevatedButton.styleFrom(
minimumSize: Size(88.w, 44.h),
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(8.r)),
),
),
textButtonTheme: TextButtonThemeData(
style: TextButton.styleFrom(
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(8.r)),
),
),
outlinedButtonTheme: OutlinedButtonThemeData(
style: OutlinedButton.styleFrom(
minimumSize: Size(88.w, 44.h),
side: const BorderSide(color: border),
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(8.r)),
),
),
);
}
static ThemeData get dark {
final scheme = ColorScheme.fromSeed(
seedColor: seedColor,
brightness: Brightness.dark,
);
return ThemeData(
useMaterial3: true,
colorScheme: scheme,
appBarTheme: const AppBarTheme(
centerTitle: true,
elevation: 0,
scrolledUnderElevation: 0,
),
);
}
}
class AppSpacing {
AppSpacing._();
static double get xs => 4.r;
static double get sm => 8.r;
static double get md => 12.r;
static double get lg => 16.r;
static double get xl => 24.r;
static double get xxl => 32.r;
}