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>,
"autofocus": <bool>,
"clipBehavior": <Clip>,
"color": <Color>,
"colorBrightness": <Brightness>,
"disabledColor": <Color>,
"disabledElevation": <double>,
"disabledTextColor": <Color>>,
"elevation": <double>,
"focusColor": <Color>,
"focusElevation": <double>,
"focusNode": <FocusNode>,
"highlightColor": <Color>,
"highlightElevation": <double>,
"hoverColor": <Color>,
"hoverElevation": <double>,
"materialTapTargetSize": <MaterialTapTargetSize>,
"mouseCursor": <MouseCursor>,
"onHighlightChanged": <ValueCallback<bool>>,
"onPressed": <VoidCallback>,
"onLongPress": <VoidCallback>,
"padding": <EdgeInsetsGeometry>,
"shape": <ShapeBorder>,
"splashColor": <Color>,
"textColor": <Color>,
"textTheme": <ButtonTextTheme>,
"visualDensity": <VisualDensity>
}
As a note, the FocusNode, ValueCallback<bool>
, and VoidCallback
cannot be decoded via JSON. Instead, the only way to bind those values to
the builder is to use a function or a variable reference via the
JsonWidgetRegistry.
See also:
ThemeDecoder.decodeBrightness
ThemeDecoder.decodeClip
ThemeDecoder.decodeColor
ThemeDecoder.decodeBoxDirection
ThemeDecoder.decodeEdgeInsetsGeometry
ThemeDecoder.decodeMaterialTapTargetSize
ThemeDecoder.decodeMouseCursor
ThemeDecoder.decodeShapeBorder
ThemeDecoder.decodeButtonTextTheme
ThemeDecoder.decodeVisualDensity
Implementation
static JsonRaisedButtonBuilder? fromDynamic(
dynamic map, {
JsonWidgetRegistry? registry,
}) {
JsonRaisedButtonBuilder? result;
if (map != null) {
result = JsonRaisedButtonBuilder(
animationDuration:
JsonClass.parseDurationFromMillis(map['animationDuration']),
autofocus: JsonClass.parseBool(map['autofocus']),
clipBehavior: ThemeDecoder.decodeClip(
map['clipBehavior'],
validate: false,
) ??
Clip.none,
color: ThemeDecoder.decodeColor(
map['color'],
validate: false,
),
colorBrightness: ThemeDecoder.decodeBrightness(
map['colorBrightness'],
validate: false,
),
disabledColor: ThemeDecoder.decodeColor(
map['disabledColor'],
validate: false,
),
disabledElevation: JsonClass.parseDouble(map['disabledElevation']),
disabledTextColor: ThemeDecoder.decodeColor(
map['disabledTextColor'],
validate: false,
),
elevation: JsonClass.parseDouble(map['elevation']),
focusColor: ThemeDecoder.decodeColor(
map['focusColor'],
validate: false,
),
focusElevation: JsonClass.parseDouble(map['focusElevation']),
focusNode: map['focusNode'],
highlightColor: ThemeDecoder.decodeColor(
map['highlightColor'],
validate: false,
),
highlightElevation: JsonClass.parseDouble(map['highlightElevation']),
hoverColor: ThemeDecoder.decodeColor(
map['hoverColor'],
validate: false,
),
hoverElevation: JsonClass.parseDouble(map['hoverElevation']),
materialTapTargetSize: ThemeDecoder.decodeMaterialTapTargetSize(
map['materialTapTargetSize'],
validate: false,
),
mouseCursor: ThemeDecoder.decodeMouseCursor(map['mouseCursor']),
onHighlightChanged: map['onHighlightChanged'],
onPressed: map['onPressed'],
onLongPress: map['onLongPress'],
padding: ThemeDecoder.decodeEdgeInsetsGeometry(
map['padding'],
validate: false,
) as EdgeInsets?,
shape: ThemeDecoder.decodeShapeBorder(
map['shape'],
validate: false,
),
splashColor: ThemeDecoder.decodeColor(
map['splashColor'],
validate: false,
),
textColor: ThemeDecoder.decodeColor(
map['textColor'],
validate: false,
),
textTheme: ThemeDecoder.decodeButtonTextTheme(
map['textTheme'],
validate: false,
),
visualDensity: ThemeDecoder.decodeVisualDensity(
map['visualDensity'],
validate: false,
),
);
}
return result;
}