BloomFieldArray<T extends BloomFormControl> constructor

BloomFieldArray<T extends BloomFormControl>({
  1. List<T> initialValues = const [],
  2. List<T> itemFactory()?,
  3. List<String? Function(List<T>)> validators = const [],
  4. List<Future<String?> Function(List<T>)> asyncValidators = const [],
  5. Duration asyncDebounce = const Duration(milliseconds: 300),
})

Creates a reactive field array initialized with initialValues or an optional itemFactory.

Implementation

BloomFieldArray({
  List<T> initialValues = const [],
  List<T> Function()? itemFactory,
  this.validators = const [],
  this.asyncValidators = const [],
  this.asyncDebounce = const Duration(milliseconds: 300),
})  : _itemFactory = itemFactory,
      _initialControls = List.unmodifiable(initialValues) {
  fields = signal<List<T>>(List.of(initialValues));
  errors = signal<List<String>>([]);
  isTouched = signal(false);

  isDirty = computed(() =>
      _arrayDirty.value ||
      fields.value.any((control) => control.isDirty.value));

  isValid = computed(() =>
      errors.value.isEmpty &&
      fields.value.every((control) => control.isValid.value));

  isValidating = computed(() =>
      _arrayValidating.value ||
      fields.value.any((control) => control.isValidating.value));
}