validate method

void validate()

Validates all fields in the form.

This method marks all fields as "touched" and validates them. If all fields are valid, the form state is updated to BondFormStateStatus.valid; otherwise, it is updated to BondFormStateStatus.invalid.

Implementation

void validate() {
  for (final fieldName in state.fields.keys) {
    final field = state.get(fieldName);
    state.fields[fieldName] = field.copyWith(touched: true);
  }
  if (_allValid(true)) {
    state = state.copyWith(
      fields: Map.from(state.fields),
      status: BondFormStateStatus.valid,
    );
  } else {
    for (final fieldEntry in state.fields.entries) {
      final field = fieldEntry.value;
      final error = field.validate(state.fields);
      state.fields[fieldEntry.key] = field.updateError(error);
    }
    state = state.copyWith(
      fields: Map.from(state.fields),
      status: BondFormStateStatus.invalid,
    );
    final errors = state.fields.values
        .where((element) => element.error != null)
        .map((e) => '*${e.error}*')
        .join('\n');
    log('Form is not on valid state\n$errors');
  }
}