getTextStyle method

TextStyle? getTextStyle(
  1. Map? spec
)

Implementation

TextStyle? getTextStyle(Map? spec) {
  if (spec == null || spec.isEmpty) {
    return null;
  }

  TextStyle? textStyle;
  final baseStyle = spec["base"] ?? "";
  switch (baseStyle) {
    case "headlineLarge":
      textStyle = Theme.of(Lowder.widgets.appContext).textTheme.headlineLarge;
      break;
    case "headlineMedium":
      textStyle =
          Theme.of(Lowder.widgets.appContext).textTheme.headlineMedium;
      break;
    case "headlineSmall":
      textStyle = Theme.of(Lowder.widgets.appContext).textTheme.headlineSmall;
      break;
    case "titleLarge":
      textStyle = Theme.of(Lowder.widgets.appContext).textTheme.titleLarge;
      break;
    case "titleMedium":
      textStyle = Theme.of(Lowder.widgets.appContext).textTheme.titleMedium;
      break;
    case "titleSmall":
      textStyle = Theme.of(Lowder.widgets.appContext).textTheme.titleSmall;
      break;
    case "labelLarge":
      textStyle = Theme.of(Lowder.widgets.appContext).textTheme.labelLarge;
      break;
    case "labelMedium":
      textStyle = Theme.of(Lowder.widgets.appContext).textTheme.labelMedium;
      break;
    case "labelSmall":
      textStyle = Theme.of(Lowder.widgets.appContext).textTheme.labelSmall;
      break;
    case "bodyLarge":
      textStyle = Theme.of(Lowder.widgets.appContext).textTheme.bodyLarge;
      break;
    case "bodyMedium":
      textStyle = Theme.of(Lowder.widgets.appContext).textTheme.bodyMedium;
      break;
    case "bodySmall":
      textStyle = Theme.of(Lowder.widgets.appContext).textTheme.bodySmall;
      break;
    case "displayLarge":
      textStyle = Theme.of(Lowder.widgets.appContext).textTheme.displayLarge;
      break;
    case "displayMedium":
      textStyle = Theme.of(Lowder.widgets.appContext).textTheme.displayMedium;
      break;
    case "displaySmall":
      textStyle = Theme.of(Lowder.widgets.appContext).textTheme.displaySmall;
      break;
  }
  textStyle ??= TextStyle();

  return textStyle.copyWith(
    fontFamily: spec["fontFamily"],
    fontSize: tryParseDouble(spec["fontSize"]),
    fontWeight: getFontWeight(spec["fontWeight"]),
    fontStyle: getFontStyle(spec["fontStyle"]),
    height: tryParseDouble(spec["height"]),
    wordSpacing: tryParseDouble(spec["wordSpacing"]),
    letterSpacing: tryParseDouble(spec["letterSpacing"]),
    overflow: Lowder.properties.build("TextOverflow", spec["overflow"]),
    color: tryParseColor(spec["color"]),
    backgroundColor: tryParseColor(spec["backgroundColor"]),
    decoration: getTextDecoration(spec["decoration"]),
  );
}