fromDynamic static method
Builds the builder from a Map-like dynamic structure. This expects the JSON format to be of the following structure:
{
"activeColor": "<Color>",
"autofocus": "<bool>",
"autovalidateMode": "<AutovalidateMode>",
"checkColor": "<Color>",
"enabled": "<bool>",
"fillColor": "<MaterialStateProperty<Color>>",
"focusColor": "<Color>",
"focusNode": "<FocusNode>",
"hoverColor": "<Color>",
"isError": "<bool>",
"label": "<String>",
"materialTapTargetSize": "<MaterialTapTargetSize>",
"mouseCursor": "<MouseCursor>",
"onChanged": "<ValueChanged<bool>>",
"onSaved": "<ValueChanged<onSaved>>",
"overlayColor": "<MaterialStateProperty<Color>>",
"shape": "<OutlinedBorder>",
"side": "<BorderSide>",
"splashRadius": "<double>",
"tristate": "<bool>",
"validators": "<ValueValidator[]>",
"value": "<bool>",
"visualDensity": "<VisualDensity>"
}
As a note, the FocusNode and ValueChanged<bool> 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:
- buildCustom
ThemeDecoder.decodeAutovalidateMode
ThemeDecoder.decodeBorderSide
ThemeDecoder.decodeColor
ThemeDecoder.decodeMaterialStatePropertyColor
ThemeDecoder.decodeMaterialTapTargetSize
ThemeDecoder.decodeMouseCursor
ThemeDecoder.decodeOutlinedBorder
ThemeDecoder.decodeVisualDensity
Validator
Implementation
static JsonCheckboxBuilder? fromDynamic(
dynamic map, {
JsonWidgetRegistry? registry,
}) {
JsonCheckboxBuilder? result;
if (map != null) {
result = JsonCheckboxBuilder(
activeColor: ThemeDecoder.decodeColor(
map['activeColor'],
validate: false,
),
autofocus: JsonClass.parseBool(map['autofocus']),
autovalidateMode: map['autovalidate'] == null
? ThemeDecoder.decodeAutovalidateMode(
map['autovalidateMode'],
validate: false,
)
: JsonClass.parseBool(map['autovalidate']) == true
? AutovalidateMode.always
: AutovalidateMode.disabled,
checkColor: ThemeDecoder.decodeColor(
map['checkColor'],
validate: false,
),
enabled:
map['enabled'] == null ? true : JsonClass.parseBool(map['enabled']),
fillColor: ThemeDecoder.decodeMaterialStatePropertyColor(
map['fillColor'],
validate: false,
),
focusColor: ThemeDecoder.decodeColor(
map['focusColor'],
validate: false,
),
focusNode: map['focusNode'],
hoverColor: ThemeDecoder.decodeColor(
map['hoverColor'],
validate: false,
),
isError: JsonClass.parseBool(map['isError']),
label: map['label'],
materialTapTargetSize: ThemeDecoder.decodeMaterialTapTargetSize(
map['materialTapTargetSize'],
validate: false,
),
mouseCursor: ThemeDecoder.decodeMouseCursor(
map['mouseCursor'],
validate: false,
),
onChanged: map['onChanged'],
onSaved: map['onSaved'],
overlayColor: ThemeDecoder.decodeMaterialStatePropertyColor(
map['overlayColor'],
validate: false,
),
shape: ThemeDecoder.decodeOutlinedBorder(
map['shape'],
validate: false,
),
side: ThemeDecoder.decodeBorderSide(
map['side'],
validate: false,
),
splashRadius: JsonClass.maybeParseDouble(map['splashRadius']),
tristate: JsonClass.parseBool(map['tristate']),
validator: map['validators'] == null
? null
: Validator.fromDynamic({'validators': map['validators']}),
value: map['value'] == null ? null : JsonClass.parseBool(map['value']),
visualDensity: ThemeDecoder.decodeVisualDensity(
map['visualDensity'],
validate: false,
),
);
}
return result;
}