decodeTextStyle static method

TextStyle? decodeTextStyle(
  1. dynamic value, {
  2. bool validate = true,
})

Decodes a given Map-like value into a TextStyle. This expects the given value to have the following structure:

{
  "backgroundColor": "<Color>",
  "color": "<Color>",
  "decoration": "<TextDecoration>",
  "decorationColor": "<Color>",
  "decorationStyle": "<TextDecorationStyle>",
  "decorationThickness": "<double>",
  "fontFamily": "<FontFamily>",
  "fontFamilyFallback": "<String[]>",
  "fontFeatures": "<FontFeature[]>",
  "fontSize": "<double>",
  "fontStyle": "<FontStyle>",
  "fontWeight": "<FontWeight>",
  "height": "<double>",
  "inherit": "<bool>",
  "leadingDistribution": "<TextLeadingDistribution>",
  "letterSpacing": "<double>",
  "locale": "<Locale>",
  "overflow": "<TextOverflow>",
  "package": "<String>",
  "shadows": "<Shadow[]>",
  "textBaseline": "<TextBaseline>",
  "wordSpacing": "<double>"
}

See also:

Implementation

static TextStyle? decodeTextStyle(
  dynamic value, {
  bool validate = true,
}) {
  TextStyle? result;

  if (value is TextStyle) {
    result = value;
  } else if (value != null) {
    assert(SchemaValidator.validate(
      schemaId: '$_baseSchemaUrl/text_style',
      value: value,
      validate: validate,
    ));
    result = TextStyle(
      // background: @unencodable
      backgroundColor: decodeColor(
        value['backgroundColor'],
        validate: false,
      ),
      color: decodeColor(
        value['color'],
        validate: false,
      ),
      decoration: decodeTextDecoration(
        value['decoration'],
        validate: false,
      ),
      decorationColor: decodeColor(
        value['decorationColor'],
        validate: false,
      ),
      decorationStyle: decodeTextDecorationStyle(
        value['decorationStyle'],
        validate: false,
      ),
      decorationThickness:
          JsonClass.maybeParseDouble(value['decorationThickness']),
      fontFamily: value['fontFamily'],
      fontFamilyFallback: value['fontFamilyFallback'] == null
          ? null
          : List<String>.from(value['fontFamilyFallback']),
      fontFeatures: value['fontFeatures'] == null
          ? null
          : List<FontFeature>.from(
              value['fontFeatures'].map(
                (value) => decodeFontFeature(
                  value,
                  validate: false,
                ),
              ),
            ),
      fontVariations: (value['fontVariations'] as List?)
          ?.map<FontVariation>(
            (e) => decodeFontVariation(
              e,
              validate: false,
            )!,
          )
          .toList(),
      fontWeight: decodeFontWeight(
        value['fontWeight'],
        validate: false,
      ),
      fontSize: JsonClass.maybeParseDouble(value['fontSize']),
      fontStyle: decodeFontStyle(
        value['fontStyle'],
        validate: false,
      ),
      // foreground: @unencodable
      height: JsonClass.maybeParseDouble(value['height']),
      inherit: JsonClass.parseBool(
        value['inherit'],
        whenNull: true,
      ),
      leadingDistribution: decodeTextLeadingDistribution(
        value['leadingDistribution'],
        validate: false,
      ),
      letterSpacing: JsonClass.maybeParseDouble(value['letterSpacing']),
      locale: decodeLocale(
        value['locale'],
        validate: false,
      ),
      overflow: decodeTextOverflow(
        value['overflow'],
        validate: false,
      ),
      package: value['package'],
      shadows: value['shadows'] == null
          ? null
          : List<Shadow>.from(
              value['shadows'].map(
                (value) => decodeShadow(
                  value,
                  validate: false,
                ),
              ),
            ),
      textBaseline: decodeTextBaseline(
        value['textBaseline'],
        validate: false,
      ),
      wordSpacing: JsonClass.maybeParseDouble(value['wordSpacing']),
    );
  }

  return result;
}