SessionManager class final

Manages user authentication state across the application lifecycle.

Extends ChangeNotifier so widgets can rebuild reactively, and also exposes a stateStream for non-widget consumers (e.g. Bloc/Riverpod bridges).

State is persisted across restarts: on construction the manager restores the previous session from SecurePrefs and validates token expiry via TokenStore.

// In main()
final session = SessionManager.instance;
await session.restore();

// In a widget
final session = context.watch<SessionManager>();
if (session.isAuthenticated) { ... }
Inheritance
Implemented types

Properties

currentUserId → String?
The authenticated user's identifier, or null when unauthenticated.
no setter
hashCode → int
The hash code for this object.
no setterinherited
hasListeners → bool
Whether any listeners are currently registered.
no setterinherited
isAuthenticated → bool
Whether the user is currently authenticated.
no setteroverride
runtimeType → Type
A representation of the runtime type of the object.
no setterinherited
state → SessionState
The current session state.
no setteroverride
stateStream → Stream<SessionState>
A broadcast stream that emits every time state changes.
no setter

Methods

addListener(VoidCallback listener) → void
Register a closure to be called when the object changes.
inherited
dispose() → void
Discards any resources used by the object.
override
login({required String accessToken, required String refreshToken, String? userId, Map<String, dynamic>? userData}) → Future<void>
Persists tokens and transitions to SessionAuthenticated.
logout() → Future<void>
Clears all tokens, removes persisted session data, and transitions to SessionUnauthenticated.
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
notifyListeners() → void
Call all the registered listeners.
inherited
removeListener(VoidCallback listener) → void
Remove a previously registered closure from the list of closures that are notified when the object changes.
inherited
restore() → Future<void>
Restores session state from persisted storage.
toString() → String
A string representation of this object.
inherited

Operators

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

Static Properties

instance → SessionManager
Returns the singleton, constructing it with default dependencies on the first call. Override dependencies only for testing via resetForTesting.
no setter

Static Methods

resetForTesting({required TokenStoreBase tokenStore, required SecurePrefsBase securePrefs}) → void
Replaces the singleton with a test double. Call in test setUp.