import 'package:data/app_setting_data/repository/app_setting_box_repository_impl.dart'; import 'package:flutter/material.dart'; import 'package:google_fonts/google_fonts.dart'; import 'package:local_db_core/lib/boxes/box_list/setting_box/app_setting_box.dart'; import 'package:repositories/app_setting_box_domain/repository/app_setting_box_repository.dart'; enum FontWeights { light, regular, medium, bold, black, } enum FontFamilyName { segoeui, moshaf, moshafAEO, sname, aar, aar2, times, noor, noorAeo, } extension FontFamilyNameExtension on FontFamilyName { String get name { switch (this) { case FontFamilyName.segoeui: return 'Vazir'; case FontFamilyName.moshaf: return 'Moshaf'; case FontFamilyName.moshafAEO: return 'MoshafAEO'; case FontFamilyName.sname: return 'sname'; case FontFamilyName.aar: return 'aar'; case FontFamilyName.aar2: return 'aar2'; case FontFamilyName.times: return 'times'; case FontFamilyName.noor: return 'noor'; case FontFamilyName.noorAeo: return 'noor_aeo'; } } } class AppTheme { AppTheme.privateConstructor(); static final AppTheme instance = AppTheme.privateConstructor(); factory AppTheme() { return instance; } final AppSettingBoxRepository _localRepository = AppSettingBoxRepositoryImpl(appSettingBox: AppSettingBox()); ThemeData lightThemeData = ThemeData( brightness: Brightness.light, primaryColor: Colors.teal, checkboxTheme: const CheckboxThemeData().copyWith(), colorScheme: const ColorScheme.light().copyWith( primary: const Color(0xFF2049EB), secondary: Colors.white.withOpacity(0), ), textTheme: const TextTheme( displayLarge: TextStyle(fontSize: 24.0, fontWeight: FontWeight.bold), titleLarge: TextStyle(fontSize: 16.0, fontStyle: FontStyle.italic), bodyMedium: TextStyle(fontSize: 12.0), ), ); final segoeFontName = 'Vazir'; TextStyle fontCreator( double fontSize, FontWeights fontWeights, fontColor, [ FontFamilyName? fontName, wordSpacing, lineHeight, shadow, ]) { String languageCode = _localRepository.getCurrentLanguage() ?? 'fa'; if (languageCode == 'ar' && (fontName == null || fontName == FontFamilyName.segoeui || fontName == FontFamilyName.times)) { return GoogleFonts.notoSansArabic( color: fontColor, fontStyle: FontStyle.normal, fontWeight: fontWeights == FontWeights.light ? FontWeight.w300 : fontWeights == FontWeights.regular ? FontWeight.w400 : fontWeights == FontWeights.medium ? FontWeight.w500 : fontWeights == FontWeights.bold ? FontWeight.w700 : FontWeight.w800, height: (lineHeight ?? 1) * 1.4, wordSpacing: wordSpacing, fontSize: fontSize, shadows: shadow, ); } return TextStyle( color: fontColor, fontStyle: FontStyle.normal, fontFamily: fontName?.name ?? segoeFontName, fontWeight: fontWeights == FontWeights.light ? FontWeight.w300 : fontWeights == FontWeights.regular ? FontWeight.w400 : fontWeights == FontWeights.medium ? FontWeight.w500 : fontWeights == FontWeights.bold ? FontWeight.w700 : FontWeight.w800, height: lineHeight, wordSpacing: wordSpacing, fontSize: fontSize, shadows: shadow, ); } }