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.
149 lines
5.3 KiB
Dart
149 lines
5.3 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:google_fonts/google_fonts.dart';
|
|
import 'package:provider/provider.dart';
|
|
import 'package:hmg_patient_app/core/viewModels/project_view_model.dart';
|
|
|
|
/// Font utility class to manage consistent font selection across the app
|
|
class FontUtils {
|
|
/// Get the appropriate font family based on the current language
|
|
static bool getFontFamily(BuildContext context) {
|
|
final projectViewModel = Provider.of<ProjectViewModel>(context, listen: false);
|
|
return projectViewModel.isArabic ? true : false;
|
|
}
|
|
|
|
/// Get the appropriate font family for a specific language
|
|
static String getFontFamilyForLanguage(bool isArabic) {
|
|
return isArabic ? 'Cairo' : 'Poppins';
|
|
}
|
|
}
|
|
|
|
extension DynamicTextStyleExtension on BuildContext {
|
|
TextStyle dynamicTextStyle(
|
|
{double? fontSize,
|
|
FontWeight? fontWeight,
|
|
Color? color,
|
|
double? letterSpacing,
|
|
double? wordSpacing,
|
|
double? height,
|
|
List<Shadow>? shadows,
|
|
Color? backgroundColor,
|
|
TextDecoration? decoration,
|
|
Color? decorationColor,
|
|
TextDecorationStyle? decorationStyle,
|
|
double? decorationThickness,
|
|
Locale? locale,
|
|
TextBaseline? textBaseline,
|
|
FontStyle? fontStyle,
|
|
bool isLanguageSwitcher = false}) {
|
|
final family = FontUtils.getFontFamily(this);
|
|
|
|
return isLanguageSwitcher
|
|
? (family
|
|
? GoogleFonts.poppins(
|
|
fontSize: fontSize,
|
|
fontWeight: fontWeight,
|
|
color: color,
|
|
letterSpacing: letterSpacing,
|
|
wordSpacing: wordSpacing,
|
|
height: height,
|
|
shadows: shadows,
|
|
backgroundColor: backgroundColor,
|
|
decoration: decoration,
|
|
decorationColor: decorationColor,
|
|
decorationStyle: decorationStyle,
|
|
decorationThickness: decorationThickness,
|
|
locale: locale ?? Localizations.localeOf(this),
|
|
textBaseline: textBaseline,
|
|
fontStyle: fontStyle,
|
|
)
|
|
: GoogleFonts.cairo(
|
|
fontSize: fontSize,
|
|
fontWeight: fontWeight,
|
|
color: color,
|
|
letterSpacing: letterSpacing,
|
|
wordSpacing: wordSpacing,
|
|
height: height,
|
|
shadows: shadows,
|
|
backgroundColor: backgroundColor,
|
|
decoration: decoration,
|
|
decorationColor: decorationColor,
|
|
decorationStyle: decorationStyle,
|
|
decorationThickness: decorationThickness,
|
|
locale: locale ?? Localizations.localeOf(this),
|
|
textBaseline: textBaseline,
|
|
fontStyle: fontStyle,
|
|
))
|
|
: (family
|
|
? GoogleFonts.cairo(
|
|
fontSize: fontSize,
|
|
fontWeight: fontWeight,
|
|
color: color,
|
|
letterSpacing: letterSpacing,
|
|
wordSpacing: wordSpacing,
|
|
height: height,
|
|
shadows: shadows,
|
|
backgroundColor: backgroundColor,
|
|
decoration: decoration,
|
|
decorationColor: decorationColor,
|
|
decorationStyle: decorationStyle,
|
|
decorationThickness: decorationThickness,
|
|
locale: locale ?? Localizations.localeOf(this),
|
|
textBaseline: textBaseline,
|
|
fontStyle: fontStyle,
|
|
)
|
|
: GoogleFonts.poppins(
|
|
fontSize: fontSize,
|
|
fontWeight: fontWeight,
|
|
color: color,
|
|
letterSpacing: letterSpacing,
|
|
wordSpacing: wordSpacing,
|
|
height: height,
|
|
shadows: shadows,
|
|
backgroundColor: backgroundColor,
|
|
decoration: decoration,
|
|
decorationColor: decorationColor,
|
|
decorationStyle: decorationStyle,
|
|
decorationThickness: decorationThickness,
|
|
locale: locale ?? Localizations.localeOf(this),
|
|
textBaseline: textBaseline,
|
|
fontStyle: fontStyle,
|
|
));
|
|
|
|
// return family
|
|
// ? GoogleFonts.cairo(
|
|
// fontSize: fontSize,
|
|
// fontWeight: fontWeight,
|
|
// color: color,
|
|
// letterSpacing: letterSpacing,
|
|
// wordSpacing: wordSpacing,
|
|
// height: height,
|
|
// shadows: shadows,
|
|
// backgroundColor: backgroundColor,
|
|
// decoration: decoration,
|
|
// decorationColor: decorationColor,
|
|
// decorationStyle: decorationStyle,
|
|
// decorationThickness: decorationThickness,
|
|
// locale: locale ?? Localizations.localeOf(this),
|
|
// textBaseline: textBaseline,
|
|
// fontStyle: fontStyle,
|
|
// )
|
|
// : GoogleFonts.poppins(
|
|
// fontSize: fontSize,
|
|
// fontWeight: fontWeight,
|
|
// color: color,
|
|
// letterSpacing: letterSpacing,
|
|
// wordSpacing: wordSpacing,
|
|
// height: height,
|
|
// shadows: shadows,
|
|
// backgroundColor: backgroundColor,
|
|
// decoration: decoration,
|
|
// decorationColor: decorationColor,
|
|
// decorationStyle: decorationStyle,
|
|
// decorationThickness: decorationThickness,
|
|
// locale: locale ?? Localizations.localeOf(this),
|
|
// textBaseline: textBaseline,
|
|
// fontStyle: fontStyle,
|
|
// );
|
|
}
|
|
}
|