InjectedAuth<T, P> class Null safety

Injection of a state that can authenticate and authorize a user.

This injected state abstracts the best practices of the clean architecture to come out with a simple, clean, and testable approach to manage user authentication and authorization.

The approach consists of the following steps:

  • Define uer User Model. (The name is up to you).
  • You may define a class (or enum) to parametrize the query.
  • Your repository must implements IAuth<T, P> where T is the User type and P is the parameter type. with IAuth<T, P> you define sign-(in, up , out) methods.
  • Instantiate an InjectedAuth object using RM.injectAuth method.
  • Later on use InjectedAuth.auth.signUp, InjectedAuth.auth.signIn, and InjectedAuth.auth.signOut for sign up, sign in, sign out.
  • In the UI you can use OnAuthBuilder to listen the this injected state and define the appropriate view for each state.

See: InjectedAuth.auth, _AuthService.signUp, _AuthService.singIn, _AuthService.signOut, _AuthService.refreshToken,and OnAuthBuilder

Implemented types
Available Extensions

Constructors

InjectedAuth()

Properties

auth → _AuthService<T, P>
Object that encapsulates the signIn, signUp, signOut methods
read-only
autoDisposeWhenNotUsed bool
read-only, inherited
canRedoState bool
Whether the state can be redone.
read-only, inherited
canUndoState bool
Whether the state can be done
read-only, inherited
connectionState ConnectionState
read-only, inherited
customStatus Object?
Custom status of the state. Set manually to mark the state with a particular tag to be used in your logic.
read / write, inherited
debugMessage String?
read / write, inherited
error → dynamic
The error
read-only, inherited
hasData bool
The state is mutated successfully.
read-only, inherited
hasError bool
The stats has error
read-only, inherited
hashCode int
The hash code for this object. [...]
read-only, inherited
hasObservers bool
Whether the state has observers
read-only, inherited
isActive bool
Whether the state is active or not. [...]
read-only, inherited
isDone bool
The state is mutated using a stream and the stream is done.
read-only, inherited
isIdle bool
The state is initialized and never mutated.
read-only, inherited
isSigned bool
Whether the a user is signed or not
read-only
isWaiting bool
The state is waiting for and asynchronous task to end.
read-only, inherited
observerLength int
read-only, inherited
oldSnapState SnapState<T>
read-only, inherited
rebuild → _Rebuild<T>
Callable class used to listen to a reactive (injected) model and rebuild widget [...]
late, final, inherited
runtimeType Type
A representation of the runtime type of the object.
read-only, inherited
snapState SnapState<T>
A snap representation of the state
read / write, inherited
state ↔ T
read / write, inherited
stateAsync Future<T>
It is a future of the state. The future is active if the state is on the isWaiting status.
read-only, inherited
subscription StreamSubscription?
It is not null if the state is waiting for a Future or is subscribed to a Stream
read-only, inherited

Methods

call(BuildContext context, {bool defaultToGlobal = false}) Injected<T>
Obtain the Injected model from the nearest InheritedWidget inserted using inherited. [...]
inherited
catchError(void onError(dynamic error, StackTrace s)) Future<InjectedBase<T>>
inherited
clearUndoStack() → void
Clear undoStack;
inherited
deletePersistState() → void
Delete the state form the persistence store
inherited
dispose() → void
Dispose the state.
inherited
future<F>(Future<F> future(T s)) Future<F> Function()
inherited
getRepoAs<R extends IAuth<T, P>>() → R
Get the auth repository of type R
inherited({required Widget builder(BuildContext), Key? key, FutureOr<T> stateOverride()?, bool connectWithGlobal = true, String? debugPrintWhenNotifiedPreMessage, String toDebugString(T?)?}) Widget
Provide the injected model using an InheritedWidget that wraps its state. [...]
inherited
initializeState() FutureOr<T>
Initialize the state
inherited
injectAuthMock(IAuth<T, P> fakeRepository()?) → void
Inject a fake implementation of this injected model. [...]
injectFutureMock(Future<T> fakeCreator()) → void
Inject a fake future implementation of this injected model. [...]
inherited
injectMock(T fakeCreator()) → void
Inject a fake implementation of this injected model. [...]
inherited
injectStreamMock(Stream<T> fakeCreator()) → void
Inject a fake stream implementation of this injected model. [...]
inherited
noSuchMethod(Invocation invocation) → dynamic
Invoked when a non-existent method or property is accessed. [...]
inherited
notify() → void
Notify observers
inherited
of(BuildContext context, {bool defaultToGlobal = false}) → T
Obtain the state from the nearest InheritedWidget inserted using inherited. [...]
inherited
onAll<R>({R onIdle()?, required R onWaiting()?, required R onError(dynamic error, VoidCallback refreshError)?, required R onData(T data)}) → R
inherited
onErrorRefresher() → void
IF the state is in the hasError status, The last callback that causes the error can be reinvoked.
inherited
onOrElse<R>({R onIdle()?, R onWaiting()?, R onError(dynamic error, VoidCallback refreshError)?, R onData(T data)?, required R orElse(T data)}) → R
inherited
persistState() → void
Persist the state
inherited
redoState() → void
Redo to the next valid state (isWaiting and hasError are ignored)
inherited
refresh() Future<T?>
Refresh the Injected state. Refreshing the state means reinitialize it and reinvoke its creation function and notify its listeners. [...]
inherited
reInherited({Key? key, required BuildContext context, required Widget builder(BuildContext)}) Widget
Provide the Injected model to another widget tree branch.
inherited
setState<R>(FutureOr<R> fn(T s), {void onData(T data)?, void onError(dynamic error)?, On<void>? onSetState, void onRebuildState()?, SideEffects<T>? sideEffects, int debounceDelay = 0, int throttleDelay = 0, bool shouldAwait = false, bool skipWaiting = false, BuildContext? context, bool shouldOverrideDefaultSideEffects(SnapState<T> snap)?}) Future<T>
Mutate the state of the model and notify observers. [...]
inherited
subscribeToRM(void fn(SnapState<T>? snap)) VoidCallback
Subscribe to the state
inherited
toggle() → void
If the state is bool, toggle it and notify listeners [...]
inherited
toString() String
A string representation of this object. [...]
inherited
undoState() → void
Undo to the last valid state (isWaiting and hasError are ignored)
inherited
whenConnectionState<R>({required R onIdle(), required R onWaiting(), required R onData(T snapState), required R onError(dynamic error), bool catchError = true}) → R
Exhaustively switch over all the possible statuses of connectionState. Used mostly to return Widgets.
inherited

Operators

operator ==(Object other) bool
The equality operator. [...]
inherited