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>,
"activeThumbImage": <ImageProvider<Object>>
"activeTrackColor": <Color>,
"autofocus": <bool>,
"autovalidateMode": <AutovalidateMode>,
"dragStartBehavior": <DragStartBehavior>,
"enabled": <bool>,
"focusColor": <Color>,
"focusNode": <FocusNode>,
"hoverColor": <Color>,
"inactiveThumbColor": <Color>,
"inactiveThumbImage": <ImageProvider<Object>>,
"inactiveTrackColor": <Color>,
"label": <String>,
"materialTapTargetSize": <MaterialTapTargetSize>,
"mouseCursor": <MouseCursor>,
"onActiveThumbImageError": <ImageErrorListener>,
"onChanged": <ValueCallback<bool>>,
"onInctiveThumbImageError": <ImageErrorListener>,
"onSaved": <ValueCallback<bool>>,
"overlayColor": <MaterialStateProperty<Color>>,
"splashRadius": <double>,
"thumbColor": <MaterialStateProperty<Color>>,
"trackColor": <MaterialStateProperty<Color>>,
"validators": <ValueValidator[]>,
"value": <bool>,
"visualDensity": <VisualDensity>,
}
As a note, the FocusNode and the ValueCallback<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.decodeColor
ThemeDecoder.decodeDragStartBehavior
ThemeDecoder.decodeMaterialStatePropertyColor
ThemeDecoder.decodeMouseCursor
ThemeDecoder.decodeVisualDensity
Validator
Implementation
static JsonSwitchBuilder? fromDynamic(
dynamic map, {
JsonWidgetRegistry? registry,
}) {
JsonSwitchBuilder? result;
if (map != null) {
result = JsonSwitchBuilder(
activeColor: ThemeDecoder.decodeColor(
map['activeColor'],
validate: false,
),
activeThumbImage: ThemeDecoder.decodeImageProvider(
map['activeThumbImage'],
validate: false,
),
activeTrackColor: ThemeDecoder.decodeColor(
map['activeTrackColor'],
validate: false,
),
autofocus: JsonClass.parseBool(map['autofocus']),
autovalidateMode: map['autovalidate'] == null
? ThemeDecoder.decodeAutovalidateMode(map['autovalidateMode'])
: JsonClass.parseBool(map['autovalidate']) == true
? AutovalidateMode.always
: AutovalidateMode.disabled,
dragStartBehavior: ThemeDecoder.decodeDragStartBehavior(
map['dragStartBehavior'],
validate: false,
) ??
DragStartBehavior.start,
enabled:
map['enabled'] == null ? true : JsonClass.parseBool(map['enabled']),
focusColor: ThemeDecoder.decodeColor(
map['focusColor'],
validate: false,
),
focusNode: map['focusNode'],
hoverColor: ThemeDecoder.decodeColor(
map['hoverColor'],
validate: false,
),
inactiveThumbColor: ThemeDecoder.decodeColor(
map['inactiveThumbColor'],
validate: false,
),
inactiveThumbImage: ThemeDecoder.decodeImageProvider(
map['inactiveThumbImage'],
validate: false,
),
inactiveTrackColor: ThemeDecoder.decodeColor(
map['inactiveTrackColor'],
validate: false,
),
label: map['label'],
materialTapTargetSize: ThemeDecoder.decodeMaterialTapTargetSize(
map['materialTapTargetSize'],
validate: false,
),
mouseCursor: ThemeDecoder.decodeMouseCursor(
map['mouseCursor'],
validate: false,
),
onActiveThumbImageError: map['onActiveThumbImageError'],
onChanged: map['onChanged'],
onInactiveThumbImageError: map['onInactiveThumbImageError'],
onSaved: map['onSaved'],
overlayColor: ThemeDecoder.decodeMaterialStatePropertyColor(
map['overlayColor'],
validate: false,
),
splashRadius: JsonClass.parseDouble('splashRadius'),
thumbColor: ThemeDecoder.decodeMaterialStatePropertyColor(
map['thumbColor'],
validate: false,
),
trackColor: ThemeDecoder.decodeMaterialStatePropertyColor(
map['trackColor'],
validate: false,
),
validator: map['validators'] == null
? null
: Validator.fromDynamic({'validators': map['validators']}),
value: JsonClass.parseBool(map['value']),
visualDensity: ThemeDecoder.decodeVisualDensity(
map['visualDensity'],
validate: false,
),
);
}
return result;
}