responsiveFontSize static method

double responsiveFontSize(
  1. double fontSize, {
  2. double? screenHeightPxReference,
  3. 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;
}