fromDynamic static method

JsonTextFormFieldBuilder? fromDynamic(
  1. dynamic map, {
  2. JsonWidgetRegistry? registry,
})

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;
}