maybeFromDynamic static method

JsonSemanticsBuilderModel? maybeFromDynamic(
  1. dynamic map, {
  2. Map<String, dynamic> args = const {},
  3. JsonWidgetRegistry? registry,
})

Implementation

static JsonSemanticsBuilderModel? maybeFromDynamic(
  dynamic map, {
  Map<String, dynamic> args = const {},
  JsonWidgetRegistry? registry,
}) {
  JsonSemanticsBuilderModel? result;

  if (map != null) {
    if (map is String) {
      map = yaon.parse(
        map,
        normalize: true,
      );
    }

    if (map is JsonSemanticsBuilderModel) {
      result = map;
    } else {
      registry ??= JsonWidgetRegistry.instance;
      map = registry.processArgs(map, <String>{}).value;
      result = JsonSemanticsBuilderModel(
        args,
        attributedDecreasedValue: map['attributedDecreasedValue'],
        attributedHint: map['attributedHint'],
        attributedIncreasedValue: map['attributedIncreasedValue'],
        attributedLabel: map['attributedLabel'],
        attributedValue: map['attributedValue'],
        blockUserActions: JsonClass.parseBool(
          map['blockUserActions'],
          whenNull: false,
        ),
        button: JsonClass.maybeParseBool(
          map['button'],
        ),
        checked: JsonClass.maybeParseBool(
          map['checked'],
        ),
        container: JsonClass.parseBool(
          map['container'],
          whenNull: false,
        ),
        currentValueLength: () {
          dynamic parsed = JsonClass.maybeParseInt(map['currentValueLength']);

          return parsed;
        }(),
        customSemanticsActions: map['customSemanticsActions'],
        decreasedValue: map['decreasedValue'],
        enabled: JsonClass.maybeParseBool(
          map['enabled'],
        ),
        excludeSemantics: JsonClass.parseBool(
          map['excludeSemantics'],
          whenNull: false,
        ),
        expanded: JsonClass.maybeParseBool(
          map['expanded'],
        ),
        explicitChildNodes: JsonClass.parseBool(
          map['explicitChildNodes'],
          whenNull: false,
        ),
        focusable: JsonClass.maybeParseBool(
          map['focusable'],
        ),
        focused: JsonClass.maybeParseBool(
          map['focused'],
        ),
        header: JsonClass.maybeParseBool(
          map['header'],
        ),
        hidden: JsonClass.maybeParseBool(
          map['hidden'],
        ),
        hint: map['hint'],
        identifier: map['identifier'],
        image: JsonClass.maybeParseBool(
          map['image'],
        ),
        inMutuallyExclusiveGroup: JsonClass.maybeParseBool(
          map['inMutuallyExclusiveGroup'],
        ),
        increasedValue: map['increasedValue'],
        keyboardKey: JsonClass.maybeParseBool(
          map['keyboardKey'],
        ),
        label: map['label'],
        link: JsonClass.maybeParseBool(
          map['link'],
        ),
        liveRegion: JsonClass.maybeParseBool(
          map['liveRegion'],
        ),
        maxValueLength: () {
          dynamic parsed = JsonClass.maybeParseInt(map['maxValueLength']);

          return parsed;
        }(),
        mixed: JsonClass.maybeParseBool(
          map['mixed'],
        ),
        multiline: JsonClass.maybeParseBool(
          map['multiline'],
        ),
        namesRoute: JsonClass.maybeParseBool(
          map['namesRoute'],
        ),
        obscured: JsonClass.maybeParseBool(
          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: JsonClass.maybeParseBool(
          map['readOnly'],
        ),
        scopesRoute: JsonClass.maybeParseBool(
          map['scopesRoute'],
        ),
        selected: JsonClass.maybeParseBool(
          map['selected'],
        ),
        slider: JsonClass.maybeParseBool(
          map['slider'],
        ),
        sortKey: map['sortKey'],
        tagForChildren: () {
          dynamic parsed = ThemeDecoder.decodeSemanticsTag(
            map['tagForChildren'],
            validate: false,
          );

          return parsed;
        }(),
        textDirection: () {
          dynamic parsed = ThemeDecoder.decodeTextDirection(
            map['textDirection'],
            validate: false,
          );

          return parsed;
        }(),
        textField: JsonClass.maybeParseBool(
          map['textField'],
        ),
        toggled: JsonClass.maybeParseBool(
          map['toggled'],
        ),
        tooltip: map['tooltip'],
        value: map['value'],
        child: () {
          dynamic parsed = JsonWidgetData.maybeFromDynamic(
            map['child'],
            registry: registry,
          );

          return parsed;
        }(),
      );
    }
  }

  return result;
}