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>,
  "letterSpacing": <double>,
  "locale": <Locale>,
  "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(
      // @unencodable
      // background
      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.parseDouble(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,
                ),
              ),
            ),
      fontWeight: decodeFontWeight(
        value['fontWeight'],
        validate: false,
      ),
      fontSize: JsonClass.parseDouble(value['fontSize']),
      fontStyle: decodeFontStyle(
        value['fontStyle'],
        validate: false,
      ),
      // @unencodable
      // foreground
      height: JsonClass.parseDouble(value['height']),
      inherit: value['inherit'] == null
          ? true
          : JsonClass.parseBool(
              value['inherit'],
            ),
      letterSpacing: JsonClass.parseDouble(value['letterSpacing']),
      locale: decodeLocale(
        value['locale'],
        validate: false,
      ),
      package: value['package'],
      shadows: value['shadows'] == null
          ? null
          : List<Shadow>.from(
              value['shadows'].map(
                (value) => decodeShadow(value),
              ),
            ),
      textBaseline: decodeTextBaseline(
        value['textBaseline'],
        validate: false,
      ),
      wordSpacing: JsonClass.parseDouble(value['wordSpacing']),
    );
  }

  return result;
}