nativeFontTextStyle function

TextStyle nativeFontTextStyle(
  1. {@required String fontFamily,
  2. TextStyle textStyle,
  3. Color color,
  4. Color backgroundColor,
  5. double fontSize,
  6. FontWeight fontWeight,
  7. FontStyle fontStyle,
  8. double letterSpacing,
  9. double wordSpacing,
  10. TextBaseline textBaseline,
  11. double height,
  12. Locale locale,
  13. Paint foreground,
  14. Paint background,
  15. List<Shadow> shadows,
  16. List<FontFeature> fontFeatures,
  17. TextDecoration decoration,
  18. Color decorationColor,
  19. TextDecorationStyle decorationStyle,
  20. double decorationThickness}
)

Creates a TextStyle that uses the fontFamily for the requested native font.

This function has a side effect of loading the font into the FontLoader from the native bundle file system.

Implementation

TextStyle nativeFontTextStyle({
  @required String fontFamily,
  TextStyle textStyle,
  Color color,
  Color backgroundColor,
  double fontSize,
  FontWeight fontWeight,
  FontStyle fontStyle,
  double letterSpacing,
  double wordSpacing,
  TextBaseline textBaseline,
  double height,
  Locale locale,
  Paint foreground,
  Paint background,
  List<Shadow> shadows,
  List<FontFeature> fontFeatures,
  TextDecoration decoration,
  Color decorationColor,
  TextDecorationStyle decorationStyle,
  double decorationThickness,
}) {
  assert(fontFamily != null);

  textStyle ??= const TextStyle();
  textStyle = textStyle.copyWith(
    color: color,
    backgroundColor: backgroundColor,
    fontSize: fontSize,
    fontWeight: fontWeight,
    fontStyle: fontStyle,
    letterSpacing: letterSpacing,
    wordSpacing: wordSpacing,
    textBaseline: textBaseline,
    height: height,
    locale: locale,
    foreground: foreground,
    background: background,
    shadows: shadows,
    fontFeatures: fontFeatures,
    decoration: decoration,
    decorationColor: decorationColor,
    decorationStyle: decorationStyle,
    decorationThickness: decorationThickness,
  );

  final NativeFontVariant variant = NativeFontVariant(
    fontWeight: textStyle.fontWeight ?? FontWeight.w400,
    fontStyle: textStyle.fontStyle ?? FontStyle.normal,
  );
  final NativeFontFamilyWithVariant familyWithVariant = NativeFontFamilyWithVariant(
    family: fontFamily,
    nativeFontVariant: variant,
  );

  nativeFontLoader.loadFontIfNeeded(familyWithVariant);

  return textStyle.copyWith(
    fontFamily: familyWithVariant.toString(),
    fontFamilyFallback: <String>[fontFamily],
  );
}