gcx/frontend/admin-app/lib/app/theme/app_theme.dart

85 lines
3.0 KiB
Dart

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'app_colors.dart';
/// Genex Issuer Console - Material 3 Theme
///
/// 企业端主题:更沉稳的企业管理风格
class AppTheme {
AppTheme._();
static ThemeData get light => ThemeData(
useMaterial3: true,
brightness: Brightness.light,
colorScheme: const ColorScheme.light(
primary: AppColors.primary,
primaryContainer: AppColors.primaryContainer,
secondary: AppColors.success,
error: AppColors.error,
surface: AppColors.surface,
onPrimary: Colors.white,
onSurface: AppColors.textPrimary,
outline: AppColors.border,
),
scaffoldBackgroundColor: AppColors.background,
appBarTheme: const AppBarTheme(
elevation: 0,
scrolledUnderElevation: 0.5,
centerTitle: true,
backgroundColor: AppColors.surface,
foregroundColor: AppColors.textPrimary,
surfaceTintColor: Colors.transparent,
systemOverlayStyle: SystemUiOverlayStyle(
statusBarColor: Colors.transparent,
statusBarIconBrightness: Brightness.dark,
),
),
navigationBarTheme: NavigationBarThemeData(
backgroundColor: AppColors.surface,
indicatorColor: AppColors.primaryContainer,
surfaceTintColor: Colors.transparent,
elevation: 0,
height: 80,
labelBehavior: NavigationDestinationLabelBehavior.alwaysShow,
),
cardTheme: CardThemeData(
elevation: 0,
color: AppColors.surface,
surfaceTintColor: Colors.transparent,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(12),
side: const BorderSide(color: AppColors.borderLight, width: 1),
),
margin: EdgeInsets.zero,
),
elevatedButtonTheme: ElevatedButtonThemeData(
style: ElevatedButton.styleFrom(
backgroundColor: AppColors.primary,
foregroundColor: Colors.white,
elevation: 0,
minimumSize: const Size(double.infinity, 52),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(12),
),
),
),
inputDecorationTheme: InputDecorationTheme(
filled: true,
fillColor: AppColors.gray50,
contentPadding: const EdgeInsets.symmetric(horizontal: 16, vertical: 16),
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(12),
borderSide: BorderSide.none,
),
enabledBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(12),
borderSide: const BorderSide(color: AppColors.borderLight, width: 1),
),
focusedBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(12),
borderSide: const BorderSide(color: AppColors.primary, width: 1.5),
),
),
);
}