โ† Home

๐Ÿงพ FIELD_TYPE_USAGE.md

This document provides examples of how to use FieldCubit<T> with different Dart data types in the reusable_editor package.


โœ… FieldCubit โ€“ Text (Required Input)

final nameFieldCubit = FieldCubit<String>(
  validator: RequiredStringValidator(),
);

nameFieldCubit.update('John Doe');
nameFieldCubit.validate(); // returns null if valid

โœ… FieldCubit โ€“ Integer (e.g., Age)

final ageFieldCubit = FieldCubit<int>(
  validator: MinValueValidator(min: 18),
);

ageFieldCubit.update(25);
ageFieldCubit.validate(); // โœ… returns null

โœ… FieldCubit โ€“ Floating point (e.g., Price)

final priceFieldCubit = FieldCubit<double>(
  validator: MinValueValidator(min: 0.0),
);

priceFieldCubit.update(99.99);

โœ… FieldCubit โ€“ Date selection

final dateFieldCubit = FieldCubit<DateTime>(
  validator: RequiredDateValidator(),
);

dateFieldCubit.update(DateTime.now());

โœ… FieldCubit โ€“ Toggle, Checkbox, etc.

final agreeFieldCubit = FieldCubit<bool>(
  validator: RequiredTrueValidator(), // Must be true
);

agreeFieldCubit.update(true); // โœ…

โœ… FieldCubit<List> โ€“ Multi-select

final tagsFieldCubit = FieldCubit<List<String>>(
  validator: RequiredListValidator(),
);

tagsFieldCubit.update(['flutter', 'dart']);

โœ… FieldCubit โ€“ Dropdown/select input

enum Gender { male, female, other }

final genderFieldCubit = FieldCubit<Gender>(
  validator: RequiredFieldValidator<Gender>(),
);

genderFieldCubit.update(Gender.male);

โœ… UI Integration Example โ€“ Text Field

BlocBuilder<FieldCubit<String>, FieldState<String>>(
  bloc: nameFieldCubit,
  builder: (_, state) => TextFormField(
    initialValue: state.value ?? '',
    onChanged: nameFieldCubit.update,
    decoration: InputDecoration(
      labelText: 'Name',
      errorText: state.errorText,
    ),
  ),
);