decodeTextStyle static method
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;
}