fromDynamic static method

JsonSemanticsBuilder? 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:

{
  "attributedDecreasedValue": "<AttributedString>",
  "attributedHint": "<AttributedString>",
  "attributedIncreasedValue": "<AttributedString>",
  "attributedLabel": "<AttributedString>",
  "attributedValue": "<AttributedString>",
  "customSemanticsActions": "<Map<CustomSemanticsAction, VoidCallback>>",
  "button": "<bool>",
  "checked": "<bool>",
  "container": "<bool>",
  "currentValueLength": "<int>",
  "decreasedValue": "<String>",
  "enabled": "<bool>",
  "excludeSemantics": "<bool>",
  "explicitChildNodes": "<bool>",
  "focusable": "<bool>",
  "focused": "<bool>",
  "header": "<bool>",
  "hidden": "<bool>",
  "hint": "<String>",
  "image": "<bool>",
  "inMutuallyExclusiveGroup": "<bool>",
  "increasedValue": "<String>",
  "keyboardKey": "<bool>",
  "label": "<String>",
  "link": "<bool>",
  "liveRegion": "<bool>",
  "maxValueLength": "<int>",
  "mixed": "<bool>",
  "multiline": "<bool>",
  "namesRoute": "<bool>",
  "obscured": "<bool>",
  "onCopy": "<VoidCallback>",
  "onCut": "<VoidCallback>",
  "onDecrease": "<VoidCallback>",
  "onDidGainAccessibilityFocus": "<VoidCallback>",
  "onDidLoseAccessibilityFocus": "<VoidCallback>",
  "onDismiss": "<VoidCallback>",
  "onIncrease": "<VoidCallback>",
  "onLongPress": "<VoidCallback>",
  "onLongPressHint": "<String>",
  "onMoveCursorBackwardByCharacter": "<ValueChaned<bool>>",
  "onMoveCursorForwardByCharacter": "<ValueChanged<bool>>",
  "onPaste": "<VoidCallback>",
  "onScrollDown": "<VoidCallback>",
  "onScrollLeft": "<VoidCallback>",
  "onScrollRight": "<VoidCallback>",
  "onScrollUp": "<VoidCallback>",
  "onSetSelection": "<ValueChanged<TextSelection>>",
  "onSetText": "<ValueChanged<String>>",
  "onTap": "<VoidCallback>",
  "onTapHint": "<String>",
  "readOnly": "<bool>",
  "scopesRoute": "<bool>",
  "selected": "<bool>",
  "slider": "<bool>",
  "sortKey": "<OrdinalSortKey>",
  "tagForChildren": "<SemanticsTag>",
  "textDirection": "<TextDirection>",
  "textField": "<bool>",
  "toggled": "<bool>",
  "tooltip": "<String>",
  "value": "<String>"
}

Implementation

static JsonSemanticsBuilder? fromDynamic(
  dynamic map, {
  JsonWidgetRegistry? registry,
}) {
  JsonSemanticsBuilder? result;

  if (map != null) {
    result = JsonSemanticsBuilder(
      button:
          map['button'] == null ? null : JsonClass.parseBool(map['button']),
      checked:
          map['checked'] == null ? null : JsonClass.parseBool(map['checked']),
      container: JsonClass.parseBool(map['container']),
      currentValueLength: JsonClass.maybeParseInt(map['currentValueLength']),
      decreasedValue: map['decreasedValue'],
      enabled:
          map['enabled'] == null ? null : JsonClass.parseBool(map['enabled']),
      excludeSemantics: JsonClass.parseBool(map['excludeSemantics']),
      explicitChildNodes: JsonClass.parseBool(map['explicitChildNodes']),
      focusable: map['focusable'] == null
          ? null
          : JsonClass.parseBool(map['focusable']),
      focused:
          map['focused'] == null ? null : JsonClass.parseBool(map['focused']),
      header:
          map['header'] == null ? null : JsonClass.parseBool(map['header']),
      hidden:
          map['hidden'] == null ? null : JsonClass.parseBool(map['hidden']),
      hint: map['hint'],
      image: map['image'] == null ? null : JsonClass.parseBool(map['image']),
      inMutuallyExclusiveGroup:
          JsonClass.parseBool(map['inMutuallyExclusiveGroup']),
      increasedValue: map['increasedValue'],
      keyboardKey: map['keyboardKey'] == null
          ? null
          : JsonClass.parseBool(map['keyboardKey']),
      label: map['label'],
      link: map['link'] == null ? null : JsonClass.parseBool(map['link']),
      liveRegion: map['liveRegion'] == null
          ? null
          : JsonClass.parseBool(map['liveRegion']),
      maxValueLength: map['maxValueLength'] == null
          ? null
          : JsonClass.maybeParseInt(map['maxValueLength']),
      mixed: map['mixed'] == null ? null : JsonClass.parseBool(map['mixed']),
      multiline: map['multiline'] == null
          ? null
          : JsonClass.parseBool(map['multiline']),
      namesRoute: map['namesRoute'] == null
          ? null
          : JsonClass.parseBool(map['namesRoute']),
      obscured: map['obscured'] == null
          ? null
          : JsonClass.parseBool(map['obscured']),
      onCopy: map['onCopy'],
      onCut: map['onCut'],
      onDecrease: map['onDecrease'],
      onDidGainAccessibilityFocus: map['onDidGainAccessibilityFocus'],
      onDidLoseAccessibilityFocus: map['onDidLoseAccessibilityFocus'],
      onDismiss: map['onDismiss'],
      onIncrease: map['onIncrease'],
      onLongPress: map['onLongPress'],
      onLongPressHint: map['onLongPressHint'],
      onMoveCursorBackwardByCharacter: map['onMoveCursorBackwardByCharacter'],
      onMoveCursorForwardByCharacter: map['onMoveCursorForwardByCharacter'],
      onPaste: map['onPaste'],
      onScrollDown: map['onScrollDown'],
      onScrollLeft: map['onScrollLeft'],
      onScrollRight: map['onScrollRight'],
      onScrollUp: map['onScrollUp'],
      onSetSelection: map['onSetSelection'],
      onSetText: map['onSetText'],
      onTap: map['onTap'],
      onTapHint: map['onTapHint'],
      readOnly: map['readOnly'] == null
          ? null
          : JsonClass.parseBool(map['readOnly']),
      scopesRoute: map['scopesRoute'] == null
          ? null
          : JsonClass.parseBool(map['scopesRoute']),
      selected: map['selected'] == null
          ? null
          : JsonClass.parseBool(map['selected']),
      slider:
          map['slider'] == null ? null : JsonClass.parseBool(map['slider']),
      sortKey: ThemeDecoder.decodeOrdinalSortKey(
        map['sortKey'],
        validate: false,
      ),
      tagForChildren: ThemeDecoder.decodeSemanticsTag(
        map['tagForChildren'],
        validate: false,
      ),
      textDirection: ThemeDecoder.decodeTextDirection(
        map['textDirection'],
        validate: false,
      ),
      textField: map['textField'] == null
          ? null
          : JsonClass.parseBool(map['textField']),
      toggled:
          map['toggled'] == null ? null : JsonClass.parseBool(map['toggled']),
      tooltip: map['tooltip'],
      value: map['value'],
    );
  }

  return result;
}