BaseFormCubit<S extends FormCubitState<R>, R> class abstract

Enterprise base form cubit that eliminates the validate → loading → API → result boilerplate.

Usage:

@injectable
class LoginCubit extends BaseFormCubit<LoginState, String> {
  final AuthRepository _repo;
  LoginCubit(this._repo) : super(const LoginState());

  void emailChanged(String v) {
    final email = state.email.update(v);
    safeEmit(state.copyWith(email: email, isValid: email.isValid && state.password.isValid));
  }

  Future<void> submit() async {
    await submitForm(
      call: () => _repo.login(email: state.email.value, password: state.password.value),
      onSuccess: (message) => emitEffect(ShowToastEffect(message)),
    );
  }
}
Inheritance

Constructors

BaseFormCubit(S initialState)

Properties

effectStream → Stream<FpEffect>
Stream of one-shot side-effects consumed by FpEffectListener.
no setterinherited
hashCode → int
The hash code for this object.
no setterinherited
isClosed → bool
Whether the bloc is closed.
no setterinherited
runtimeType → Type
A representation of the runtime type of the object.
no setterinherited
state → S
The current state.
no setterinherited
stream → Stream<S>
The current stream of states.
no setterinherited

Methods

addError(Object error, [StackTrace? stackTrace]) → void
Reports an error which triggers onError with an optional StackTrace.
inherited
close() → Future<void>
Closes the instance. This method should be called when the instance is no longer needed. Once close is called, the instance can no longer be used.
inherited
emit(S state) → void
Updates the state to the provided state. emit does nothing if the state being emitted is equal to the current state.
inherited
emitEffect(FpEffect effect) → void
Fires a one-shot FpEffect to the UI layer without polluting BLoC state.
inherited
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
onChange(Change<S> change) → void
Called whenever a change occurs with the given change. A change occurs when a new state is emitted. onChange is called before the state of the cubit is updated. onChange is a great spot to add logging/analytics for a specific cubit.
inherited
onError(Object error, StackTrace stackTrace) → void
Called whenever an error occurs and notifies BlocObserver.onError.
inherited
safeEmit(S newState) → void
Lifecycle-safe emit — prevents StateError when cubit is already closed.
inherited
submitForm({required Future<Result<R>> call(), void onSuccess(R data)?, void onError(Failure failure)?}) → Future<void>
Executes a form submission with automatic status lifecycle management.
toString() → String
A string representation of this object.
inherited

Operators

operator ==(Object other) → bool
The equality operator.
inherited