NyFormData constructor

NyFormData(
  1. String name
)

Implementation

NyFormData(String name) {
  this.name = name;
  dynamic formFields = fields();

  Map<String, dynamic> allData = {};
  for (dynamic formField in formFields) {
    if (formField is List) {
      for (Field field in formField) {
        allData.addAll(fieldData(field));
        _cast[field.key] = field.cast;
        _validate[field.key] = field.validate;
        _dummyData[field.key] = field.dummyData;
        _style[field.key] = field.style;
        if (field.autofocus == true) {
          if (_getAutoFocusedField != null) {
            throw Exception(
                "Only one field can be set to autofocus in a form");
          }
          _getAutoFocusedField = field.key;
        }
        _keys.add(field.key);
      }
      _groupedItems.add([for (Field field in formField) field.key]);
      continue;
    }

    if (!(formField is Field)) {
      continue;
    }

    allData.addAll(fieldData(formField));
    _groupedItems.add([formField.key]);

    Map<String, dynamic> formCast = cast();
    Map<String, dynamic> formValidate = validate();
    Map<String, dynamic> formDummyData = dummyData();
    Map<String, dynamic> formStyle = style();

    _cast[formField.key] = formField.cast;

    formCast.entries
        .where((test) => test.key == formField.key)
        .forEach((cast) {
      _cast[formField.key] = cast.value;
    });

    // Check if the field has a validate
    if (formField.validate != null) {
      _validate[formField.key] = formField.validate;
    }
    formValidate.entries
        .where((test) => test.key == formField.key)
        .forEach((validate) {
      _validate[formField.key] = validate.value;
    });

    if (!_validate.containsKey(formField.key)) {
      _validate[formField.key] = null;
    }

    // Check if the field has a dummy data
    if (formField.dummyData != null) {
      _dummyData[formField.key] = formField.dummyData;
    }
    formDummyData.entries
        .where((test) => test.key == formField.key)
        .forEach((dummyData) {
      _dummyData[formField.key] = dummyData.value;
    });

    if (!_dummyData.containsKey(formField.key)) {
      _dummyData[formField.key] = null;
    }

    // Check if the field has a style
    if (formField.style != null) {
      _style[formField.key] = formField.style;
    }
    formStyle.entries
        .where((test) => test.key == formField.key)
        .forEach((style) {
      _style[formField.key] = style.value;
    });

    if (!_style.containsKey(formField.key)) {
      _style[formField.key] = null;
    }

    if (formField.autofocus == true) {
      if (_getAutoFocusedField != null) {
        throw Exception("Only one field can be set to autofocus in a form");
      }
      _getAutoFocusedField = formField.key;
    }

    _keys.add(formField.key);
  }

  this.setData(allData, refreshState: false);
  if (getEnv('APP_ENV') != 'developing') {
    return;
  }
  Map<String, dynamic> allDummyData = this.getDummyData;
  allDummyData.entries.forEach((data) {
    if (data.value != null) {
      this.setField(data.key, data.value, refreshState: false);
    }
  });
}