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(
// @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'],
),
leadingDistribution: decodeTextLeadingDistribution(
value['leadingDistribution'],
validate: false,
),
letterSpacing: JsonClass.parseDouble(value['letterSpacing']),
locale: decodeLocale(
value['locale'],
validate: false,
),
overflow: decodeTextOverflow(value['overflow']),
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;
}