You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
mohemm-flutter-app/lib/theme/app_theme.dart

119 lines
4.5 KiB
Dart

import 'package:flutter/material.dart';
import 'package:mohem_flutter_app/classes/colors.dart';
import 'package:mohem_flutter_app/theme/colors.dart';
import 'package:flutter/material.dart';
class AppTheme {
static ThemeData getTheme(bool isArabic) => ThemeData(
useMaterial3: true,
// Added Material 3 support
fontFamily: isArabic ? 'Cairo' : 'Poppins',
colorScheme: ColorScheme.fromSeed(
seedColor: Colors.red,
brightness: Brightness.light,
secondary: MyColors.backgroundColor, // Replaces accentColor
error: const Color.fromRGBO(235, 80, 60, 1.0),
),
visualDensity: VisualDensity.adaptivePlatformDensity,
pageTransitionsTheme: const PageTransitionsTheme(
builders: {
TargetPlatform.android: ZoomPageTransitionsBuilder(),
TargetPlatform.iOS: CupertinoPageTransitionsBuilder(),
},
),
hintColor: Colors.grey[400],
disabledColor: Colors.grey[300],
scaffoldBackgroundColor: MyColors.backgroundColor,
textSelectionTheme: const TextSelectionThemeData(
cursorColor: Colors.grey,
selectionColor: Color.fromRGBO(80, 100, 253, 0.5),
selectionHandleColor: Colors.grey,
),
canvasColor: Colors.white,
highlightColor: Colors.grey[100]!.withOpacity(0.4),
splashColor: Colors.transparent,
indicatorColor: secondaryColor,
bottomSheetTheme: const BottomSheetThemeData(
backgroundColor: Color(0xFFE0E0E0),
surfaceTintColor: Colors.transparent, // Added for Material 3
),
iconTheme: const IconThemeData(color: MyColors.darkIconColor),
textTheme: const TextTheme(
bodyLarge: TextStyle(color: Colors.black, letterSpacing: 0.6), // Updated from bodyText1
bodyMedium: TextStyle(color: Colors.black, letterSpacing: 0.6), // Added for better coverage
displayLarge: TextStyle(color: Colors.white, letterSpacing: 0.6), // Updated from headline1
displayMedium: TextStyle(color: Colors.white, letterSpacing: 0.6), // Updated from headline2
),
floatingActionButtonTheme: const FloatingActionButtonThemeData(
highlightElevation: 2,
disabledElevation: 0,
elevation: 2,
),
appBarTheme: AppBarTheme(
backgroundColor: const Color(0xff515A5D),
surfaceTintColor: Colors.transparent,
// Added for Material 3
elevation: 0.0,
actionsIconTheme: IconThemeData(
color: Colors.grey[800],
),
iconTheme: IconThemeData(
color: Colors.grey[800],
),
),
checkboxTheme: CheckboxThemeData(
fillColor: MaterialStateProperty.resolveWith<Color?>((Set<MaterialState> states) {
if (states.contains(MaterialState.disabled)) {
return null;
}
if (states.contains(MaterialState.selected)) {
return secondaryColor;
}
return null;
}),
),
radioTheme: RadioThemeData(
fillColor: MaterialStateProperty.resolveWith<Color?>((Set<MaterialState> states) {
if (states.contains(MaterialState.disabled)) {
return null;
}
if (states.contains(MaterialState.selected)) {
return secondaryColor;
}
return null;
}),
),
switchTheme: SwitchThemeData(
thumbColor: MaterialStateProperty.resolveWith<Color?>((Set<MaterialState> states) {
if (states.contains(MaterialState.disabled)) {
return null;
}
if (states.contains(MaterialState.selected)) {
return secondaryColor;
}
return null;
}),
trackColor: MaterialStateProperty.resolveWith<Color?>((Set<MaterialState> states) {
if (states.contains(MaterialState.disabled)) {
return null;
}
if (states.contains(MaterialState.selected)) {
return secondaryColor;
}
return null;
}),
),
);
static Color get primaryColor => Colors.red;
static Color get secondaryColor => MyColors.backgroundColor;
}
extension ExtendedRevoCheckTheme on TextTheme {
//add custom styles and colors here
//taken from https://medium.com/@crizantlai/flutter-how-to-extend-themedata-b5b987a95bb5
TextStyle get price => const TextStyle(color: Colors.redAccent);
}