fromDynamic static method
Builds the builder from a Map-like dynamic structure. This expects the JSON format to be of the following structure:
{
"autofocus": "<bool>",
"borderRadius": "<BorderRadius>",
"canRequestFocus": "<bool>",
"customBorder": "<ShapeBorder>",
"enableFeedback": "<bool>",
"excludeFromSemantics": "<bool>",
"focusColor": "<Color>",
"focusNode": "<FocusNode>",
"highlightColor": "<Color>",
"hoverColor": "<Color>",
"mouseCursor": "<MouseCursor>",
"onDoubleTap": "<GestureTapCallback>",
"onFocusChange": "<ValueChanged<bool>>",
"onHighlightChanged": "<ValueChanged<bool>>",
"onHover": "<ValueChanged<bool>>",
"onLongPress": "<GestureLongPressCallback>",
"onTap": "<GestureTapCallback>",
"onTapCancel": "<GestureTapCancelCallback>",
"onTapDown": "<GestureTapDownCallback>",
"onTapUp": "<GestureTapUpCallback>",
"overlayColor": "<MaterialStatePropertyColor>",
"radius": "<double>",
"splashColor": "<Color>",
"splashFactory": "<InteractiveInkFeatureFactory>",
"statesController": "<MaterialStatesController>"
}
As a note, the FocusNode, GestureTapCallback,
GestureLongPressCallback, GestureTapCancelCallback,
GestureTapDownCallback, 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.decodeBorderRadius
ThemeDecoder.decodeColor
ThemeDecoder.decodeInteractiveInkFeatureFactory
ThemeDecoder.decodeMouseCursor
ThemeDecoder.decodeShapeBorder
Implementation
static JsonInkWellBuilder? fromDynamic(
dynamic map, {
JsonWidgetRegistry? registry,
}) {
JsonInkWellBuilder? result;
if (map != null) {
result = JsonInkWellBuilder(
autofocus: JsonClass.parseBool(map['autofocus']),
borderRadius: ThemeDecoder.decodeBorderRadius(
map['borderRadius'],
validate: false,
),
canRequestFocus: map['canRequestFocus'] == null
? true
: JsonClass.parseBool(map['canRequestFocus']),
customBorder: ThemeDecoder.decodeShapeBorder(
map['customBorder'],
validate: false,
),
enableFeedback: map['enableFeedback'] == null
? true
: JsonClass.parseBool(map['enableFeedback']),
excludeFromSemantics: JsonClass.parseBool(map['excludeFromSemantics']),
focusColor: ThemeDecoder.decodeColor(
map['focusColor'],
validate: false,
),
focusNode: map['focusNode'],
highlightColor: ThemeDecoder.decodeColor(
map['highlightColor'],
validate: false,
),
hoverColor: ThemeDecoder.decodeColor(
map['hoverColor'],
validate: false,
),
mouseCursor: ThemeDecoder.decodeMouseCursor(
map['mouseCursor'],
validate: false,
),
onDoubleTap: map['onDoubleTap'],
onFocusChange: map['onFocusChange'],
onHighlightChanged: map['onHighlightChanged'],
onHover: map['onHover'],
onLongPress: map['onLongPress'],
onTap: map['onTap'],
onTapCancel: map['onTapCancel'],
onTapDown: map['onTapDown'],
onTapUp: map['onTapUp'],
overlayColor: ThemeDecoder.decodeMaterialStatePropertyColor(
map['overlayColor'],
validate: false,
),
radius: JsonClass.maybeParseDouble(map['radius']),
splashColor: ThemeDecoder.decodeColor(
map['splashColor'],
validate: false,
),
splashFactory: ThemeDecoder.decodeInteractiveInkFeatureFactory(
map['splashFactory'],
validate: false,
),
);
}
return result;
}