fromDynamic static method
Builds the builder from a Map-like dynamic structure. This expects the JSON format to be of the following structure:
{
"animationDuration": "<int; millis>",
"borderOnForeground": "<bool>",
"borderRadius": "<BorderRadius>",
"clipBehavior": "<Clip>",
"color": "<Color>",
"elevation": "<double>",
"margin": "<EdgeInsetsGeometry>",
"materialType": "<MaterialType>",
"padding": "<EdgeInsetsGeometry>",
"shadowColor": "<Color>",
"surfaceTintColor": "<Color>",
"shape": "<ShapeBorder>",
"textStyle": "<TextStyle>"
}
See also:
ThemeDecoder.decodeBorderRadius
ThemeDecoder.decodeClip
ThemeDecoder.decodeColor
ThemeDecoder.decodeEdgeInsetsGeometry
ThemeDecoder.decodeMaterialType
ThemeDecoder.decodeShapeBorder
ThemeDecoder.decodeTextStyle
Implementation
static JsonMaterialBuilder? fromDynamic(
dynamic map, {
JsonWidgetRegistry? registry,
}) {
JsonMaterialBuilder? result;
if (map != null) {
result = JsonMaterialBuilder(
animationDuration: JsonClass.maybeParseDurationFromMillis(
map['animationDuration'],
) ??
kThemeChangeDuration,
borderOnForeground: map['borderOnForeground'] == null
? true
: JsonClass.parseBool(
map['borderOnForeground'],
),
borderRadius: ThemeDecoder.decodeBorderRadius(
map['borderRadius'],
validate: false,
),
clipBehavior: ThemeDecoder.decodeClip(
map['clipBehavior'],
validate: false,
) ??
Clip.none,
color: ThemeDecoder.decodeColor(
map['color'],
validate: false,
),
elevation: JsonClass.maybeParseDouble(map['elevation'], 0)!,
margin: ThemeDecoder.decodeEdgeInsetsGeometry(
map['margin'],
validate: false,
),
materialType: ThemeDecoder.decodeMaterialType(
map['type'],
validate: false,
) ??
MaterialType.canvas,
padding: ThemeDecoder.decodeEdgeInsetsGeometry(
map['padding'],
validate: false,
),
shadowColor: ThemeDecoder.decodeColor(
map['color'],
validate: false,
) ??
const Color(0xFF000000),
shape: ThemeDecoder.decodeShapeBorder(
map['shape'],
validate: false,
),
surfaceTintColor: ThemeDecoder.decodeColor(
map['surfaceTintColor'],
validate: false,
),
textStyle: ThemeDecoder.decodeTextStyle(
map['textStyle'],
validate: false,
),
);
}
return result;
}