responsiveFontSize static method
double
responsiveFontSize(
- double fontSize, {
- double? screenHeightPxReference,
- FontSizeMode? fontSizeMode,
Implementation
static double responsiveFontSize(
double fontSize, {
double? screenHeightPxReference,
FontSizeMode? fontSizeMode,
}) {
final _screenHeightPxReference =
screenHeightPxReference ?? ResponsivityHelper.screenHeightPxReference;
final _fontSizeMode = fontSizeMode ?? ResponsivityHelper.fontSizeMode;
switch (_fontSizeMode) {
case FontSizeMode.screenPercent:
final _verticalUnit = screenHeight / 100;
// divide into 10 just to make font sizes numbers similar to the ones on figma.
// otherwise you will need to specify the font size as a percetage of the screen.
return (fontSize * _verticalUnit / 10) *
ResponsivityHelper.screenData.textScaleFactor;
case FontSizeMode.devicePixelRatio:
return fontSize *
screenData.devicePixelRatio *
ResponsivityHelper.screenData.textScaleFactor;
case FontSizeMode.androidSPStrategy:
// conversion between font size in pixel vs dp. we want to use DP
// px = dp * (dpi / 160)
//https://developer.android.com/training/multiscreen/screendensities#TaskUseDP
final _verticalUnit = screenHeight / 100;
return fontSize *
(160 * _verticalUnit / ResponsivityHelper.screenHeight) *
ResponsivityHelper.screenData.textScaleFactor;
case FontSizeMode.referenceScreenValue:
return fontSize *
(ResponsivityHelper.screenHeight / _screenHeightPxReference) *
ResponsivityHelper.screenData.textScaleFactor;
}
// evaluar el reemplazar 160 * vertical unit, por el alto de las pantallas de los diseños de figma. de modo que ese sea la referencia del tamaño de letra.
// (854 / ResponsivityHelper.screenHeight);
// double _resizedFontSize = fontSize.toDouble();
// // previous android strategy - works fine
// if (Platform.isAndroid) {
// final _factor = (fontSize + 1) / 10;
// _resizedFontSize = _factor * ResponsivityHelper.verticalUnit;
// } else {
// final _factor = (fontSize + 5) / 10;
// _resizedFontSize = _factor * ResponsivityHelper.verticalUnit;
// print(ResponsivityHelper.verticalUnit);
// }
// return _resizedFontSize;
}