import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/theme/colors.dart'; class AppTheme { static ThemeData getTheme(isArabic) => ThemeData( fontFamily: isArabic ? 'Cairo' : 'Poppins', primarySwatch: Colors.red, visualDensity: VisualDensity.adaptivePlatformDensity, brightness: Brightness.light, pageTransitionsTheme: const PageTransitionsTheme( builders: { TargetPlatform.android: ZoomPageTransitionsBuilder(), TargetPlatform.iOS: CupertinoPageTransitionsBuilder(), }, ), hintColor: Colors.grey[400], colorScheme: ColorScheme.fromSwatch( accentColor: MyColors.backgroundColor, errorColor: const Color.fromRGBO(235, 80, 60, 1.0), ), 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, primaryColor: primaryColor, primaryColorDark: primaryColor, buttonTheme: ButtonThemeData( buttonColor: Colors.black, ), switchTheme: SwitchThemeData( thumbColor: MaterialStateProperty.resolveWith( (Set states) { if (states.contains(MaterialState.disabled)) { return null; } if (states.contains(MaterialState.selected)) { return secondaryColor; } return null; }), trackColor: MaterialStateProperty.resolveWith( (Set states) { if (states.contains(MaterialState.disabled)) { return null; } if (states.contains(MaterialState.selected)) { return secondaryColor; } return null; }), ), radioTheme: RadioThemeData( fillColor: MaterialStateProperty.resolveWith( (Set states) { if (states.contains(MaterialState.disabled)) { return null; } if (states.contains(MaterialState.selected)) { return secondaryColor; } return null; }), ), checkboxTheme: CheckboxThemeData( fillColor: MaterialStateProperty.resolveWith( (Set states) { if (states.contains(MaterialState.disabled)) { return null; } if (states.contains(MaterialState.selected)) { return secondaryColor; } return null; }), ), indicatorColor: secondaryColor, bottomSheetTheme: const BottomSheetThemeData( backgroundColor: Color(0xFFE0E0E0), ), iconTheme: const IconThemeData(color: MyColors.darkIconColor), textTheme: const TextTheme( bodyMedium: TextStyle(color: Colors.black, letterSpacing: 0.6), headlineSmall: TextStyle(color: Colors.white, letterSpacing: 0.6), headlineMedium: TextStyle(color: Colors.white, letterSpacing: 0.6), ), floatingActionButtonTheme: const FloatingActionButtonThemeData(highlightElevation: 2, disabledElevation: 0, elevation: 2), appBarTheme: AppBarTheme( systemOverlayStyle: const SystemUiOverlayStyle( statusBarBrightness: Brightness.light, ), color: const Color(0xff515A5D), elevation: 0.0, actionsIconTheme: IconThemeData( color: Colors.grey[800], ), ), ); } 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); }