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)),
);
}
}
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
errorwhich 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
stateto the providedstate. emit does nothing if thestatebeing emitted is equal to the currentstate.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
changeoccurs with the givenchange. Achangeoccurs when a newstateis emitted. onChange is called before thestateof thecubitis updated. onChange is a great spot to add logging/analytics for a specificcubit.inherited -
onError(
Object error, StackTrace stackTrace) → void -
Called whenever an
erroroccurs and notifies BlocObserver.onError.inherited -
safeEmit(
S newState) → void -
Lifecycle-safe emit — prevents StateError when cubit is already closed.
inherited
-
submitForm(
{required Future< Result< call(), void onSuccess(R data)?, void onError(Failure failure)?}) → Future<R> >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