getResponsiveFontSize static method
Calculate responsive font size based on screen size and device characteristics
Implementation
static double getResponsiveFontSize({
required BuildContext context,
double? baseSize,
double? minSize,
double? maxSize,
bool isTitle = false,
bool isSubtitle = false,
bool isBody = false,
bool isCaption = false,
}) {
final mediaQuery = MediaQuery.of(context);
final size = mediaQuery.size;
final pixelRatio = mediaQuery.devicePixelRatio;
final textScaleFactor = mediaQuery.textScaleFactor;
// Calculate screen diagonal in inches
final screenDiagonalInches =
_calculateScreenDiagonalInches(size, pixelRatio);
// Base font size calculation
double calculatedSize = baseSize ?? _baseFontSize;
// Apply screen size multiplier
double screenMultiplier = _getScreenSizeMultiplier(screenDiagonalInches);
// Apply type-specific multipliers
if (isTitle) {
calculatedSize *= 1.8;
} else if (isSubtitle) {
calculatedSize *= 1.4;
} else if (isBody) {
calculatedSize *= 1.0;
} else if (isCaption) {
calculatedSize *= 0.8;
}
// Apply responsive scaling
calculatedSize *= screenMultiplier;
// Apply text scale factor for accessibility
calculatedSize *= textScaleFactor;
// Apply minimum and maximum constraints
if (minSize != null && calculatedSize < minSize) {
calculatedSize = minSize;
}
if (maxSize != null && calculatedSize > maxSize) {
calculatedSize = maxSize;
}
return calculatedSize;
}