fromDynamic static method
Builds the builder from a Map-like dynamic structure. This expects the JSON format to be of the following structure:
{
"autocorrect": <bool>,
"autofillHints": <List<String>>
"autofocus": <bool>
"autovalidateMode": <AutovalidateMode>,
"buildCounter": <InputCounterWidgetBuilder>,
"controller": <TextEditingController>,
"cursorColor": <Color>,
"cursorHeight": <double>,
"cursorRadius": <Radius>,
"cursorWidth": <double>,
"decoration": <InputDecorationDecoder>,
"enableIMEPersonalizedLearning": <bool>,
"enableInteractiveSelection": <bool>,
"enableSuggestions": <bool>,
"enabled": <bool>,
"expands": <bool>,
"focusNode": <FocusNode>,
"initialValue": <String>,
"inputFormatters": <List<TextInputFormatter>>,
"keyboardAppearance": <Brightness>,
"keyboardType": <TextInputType>,
"maxLength": <int>,
"maxLengthEnforced": <bool>,
"maxLines": <int>,
"minLines": <int>,
"obscureText": <bool>,
"obscuringCharacter": <String>,
"onChanged": <ValueChanged<String>>,
"onEditingComplete": <VoidCallback>,
"onFieldSubmitted": <ValueChanged<String>>,
"onSaved": <FormFieldSetter<String>>,
"onTap": <VoidCallback>,
"readOnly": <bool>,
"restorationId": <bool>,
"scrollController": <ScrollController>,
"scrollPadding": <EdgeInsetsGeometry>,
"scrollPhysics": <ScrollPhysics>,
"selectionControls": <TextSelectionControls>,
"showCursor": <bool>,
"smartDashesType": <SmartDashesType>,
"smartQuotesType": <SmartQuotesType>,
"strutStyle": <StrutStyle>,
"style": <TextStyle>,
"textAlign": <TextAlign>,
"textAlignVertical": <TextAlignVertical>,
"textCapitalization": <TextCapitalization>,
"textDirection": <TextDirection>,
"textInputAction": <TextInputAction>,
"toolbarOptions": <ToolbarOptions>,
"validators": <ValueValidator[]>
}
Note: The ScrollController and TextSelectionControls cannot be decoded and can only be utilized if passed in as a variable reference.
See also:
- buildCustom
- InputDecorationDecoder.fromDynamic
ThemeDecoder.decodeAutovalidateMode
ThemeDecoder.decodeBrightness
ThemeDecoder.decodeColor
ThemeDecoder.decodeEdgeInsetsGeometry
ThemeDecoder.decodeMaxLengthEnforcement
ThemeDecoder.decodeRadius
ThemeDecoder.decodeScrollPhysics
ThemeDecoder.decodeTextSelectionControls
ThemeDecoder.decodeSmartDashesType
ThemeDecoder.decodeSmartQuotesType
ThemeDecoder.decodeTextAlign
ThemeDecoder.decodeTextAlignVertical
ThemeDecoder.decodeTextCapitalization
ThemeDecoder.decodeTextInputAction
ThemeDecoder.decodeTextInputType
ThemeDecoder.decodeTextStyle
ThemeDecoder.decodeToolbarOptions
Validator
Implementation
static JsonTextFormFieldBuilder? fromDynamic(
dynamic map, {
JsonWidgetRegistry? registry,
}) {
JsonTextFormFieldBuilder? result;
if (map != null) {
result = JsonTextFormFieldBuilder(
autocorrect: map['autocorrect'] == null
? true
: JsonClass.parseBool(map['autocorrect']),
autofillHints: map['autofillHints'] == null
? null
: List<String>.from(map['autofillHints']),
autofocus: JsonClass.parseBool(map['autofocus']),
autovalidateMode: map['autovalidate'] == null
? ThemeDecoder.decodeAutovalidateMode(map['autovalidateMode'])
: JsonClass.parseBool(map['autovalidate']) == true
? AutovalidateMode.always
: AutovalidateMode.disabled,
buildCounter: map['buildCounter'],
controller: map['controller'] ??
TextEditingController(text: map['initialValue']),
cursorColor: ThemeDecoder.decodeColor(
map['cursorColor'],
validate: false,
),
cursorHeight: JsonClass.parseDouble(map['cursorHeight']),
cursorRadius: ThemeDecoder.decodeRadius(
map['cursorRadius'],
validate: false,
),
cursorWidth: JsonClass.parseDouble(map['cursorWidth'], 2)!,
decoration: map['decoration'],
enableIMEPersonalizedLearning:
map['enableIMEPersonalizedLearning'] == null
? true
: JsonClass.parseBool(map['enableIMEPersonalizedLearning']),
enableInteractiveSelection: map['enableInteractiveSelection'] == null
? true
: JsonClass.parseBool(map['enableInteractiveSelection']),
enableSuggestions: map['enableSuggestions'] == null
? true
: JsonClass.parseBool(map['enableSuggestions']),
enabled:
map['enabled'] == null ? true : JsonClass.parseBool(map['enabled']),
expands: JsonClass.parseBool(map['expands']),
focusNode: map['focusNode'],
inputFormatters: map['inputFormatters'],
keyboardAppearance: ThemeDecoder.decodeBrightness(
map['keyboardBrightness'],
validate: false,
),
keyboardType: ThemeDecoder.decodeTextInputType(
map['keyboardType'],
validate: false,
),
maxLength: JsonClass.parseInt(map['maxLength']),
maxLengthEnforcement: ThemeDecoder.decodeMaxLengthEnforcement(
map['maxLengthEnforcement'],
),
maxLines: JsonClass.parseInt(map['maxLines'], 1),
minLines: JsonClass.parseInt(map['minLines']),
obscureText: JsonClass.parseBool(map['obscureText']),
obscuringCharacter: map['obscuringCharacter'] ?? '•',
onChanged: map['onChanged'],
onEditingComplete: map['onEditingComplete'],
onFieldSubmitted: map['onFieldSubmitted'],
onSaved: map['onSaved'],
onTap: map['onTap'],
readOnly: JsonClass.parseBool(map['readOnly']),
restorationId: map['restorationId'],
scrollPadding: ThemeDecoder.decodeEdgeInsetsGeometry(
map['scrollPadding'],
validate: false,
) ??
EdgeInsets.all(20.0),
scrollPhysics: ThemeDecoder.decodeScrollPhysics(
map['scrollPhysics'],
validate: false,
),
selectionControls: map['selectionControls'],
showCursor: map['showCursor'] == null
? null
: JsonClass.parseBool(map['showCursor']),
smartDashesType: ThemeDecoder.decodeSmartDashesType(
map['smartDashesType'],
validate: false,
),
smartQuotesType: ThemeDecoder.decodeSmartQuotesType(
map['smartQuotesType'],
validate: false,
),
strutStyle: ThemeDecoder.decodeStrutStyle(
map['strutStyle'],
validate: false,
),
style: ThemeDecoder.decodeTextStyle(
map['style'],
validate: false,
),
textAlign: ThemeDecoder.decodeTextAlign(
map['textAlign'],
validate: false,
) ??
TextAlign.start,
textAlignVertical: ThemeDecoder.decodeTextAlignVertical(
map['textAlignVertical'],
validate: false,
),
textCapitalization: ThemeDecoder.decodeTextCapitalization(
map['textCapitalization'],
validate: false,
) ??
TextCapitalization.none,
textDirection: ThemeDecoder.decodeTextDirection(
map['textDirection'],
validate: false,
),
textInputAction: ThemeDecoder.decodeTextInputAction(
map['textInputAction'],
validate: false,
),
toolbarOptions: ThemeDecoder.decodeToolbarOptions(
map['toolbarOptions'],
validate: false,
),
validator: map['validators'] == null
? null
: Validator.fromDynamic({
'validators': map['validators'],
}),
);
}
return result;
}