InjectedTheme<KEY> class Null safety

Injection of a state that handle app theme switching.

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

The approach consists of the following steps:

  • Instantiate an InjectedTheme object using RM.injectTheme method.
  • we use the TopAppWidget that must be on top of the MaterialApp widget.
     void main() {
       runApp(MyApp());
     }
    
     class MyApp extends StatelessWidget {
       // This widget is the root of your application.
       @override
       Widget build(BuildContext context) {
         return TopAppWidget(//Use TopAppWidget
           injectedTheme: themeRM, //Set te injectedTheme
           builder: (context) {
             return MaterialApp(
               theme: themeRM.lightTheme, //light theme
               darkTheme: themeRM.darkTheme, //dark theme
               themeMode: themeRM.themeMode, //theme mode
               home: HomePage(),
             );
           },
         );
       }
     }
    
Implemented types
Available Extensions

Constructors

InjectedTheme()

Properties

activeTheme ThemeData
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
darkTheme ThemeData?
Get the current dark theme.
read-only
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
isDarkTheme bool
Wether the current mode is dark. [...]
read-only
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
isWaiting bool
The state is waiting for and asynchronous task to end.
read-only, inherited
lightTheme ThemeData
Get the current light theme.
read-only
observerLength int
read-only, inherited
oldSnapState SnapState<KEY>
read-only, inherited
rebuild → _Rebuild<KEY>
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<KEY>
A snap representation of the state
read / write, inherited
state ↔ KEY
read / write, inherited-setter
stateAsync Future<KEY>
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
supportedDarkThemes Map<KEY, ThemeData>
Get supported dark themes
read-only
supportedLightThemes Map<KEY, ThemeData>
Get supported light themes
read-only
themeMode ThemeMode
The current ThemeMode
read / write

Methods

call(BuildContext context, {bool defaultToGlobal = false}) Injected<KEY>
Obtain the Injected model from the nearest InheritedWidget inserted using inherited. [...]
inherited
catchError(void onError(dynamic error, StackTrace s)) Future<InjectedBase<KEY>>
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(KEY s)) Future<F> Function()
inherited
inherited({required Widget builder(BuildContext), Key? key, FutureOr<KEY> stateOverride()?, bool connectWithGlobal = true, String? debugPrintWhenNotifiedPreMessage, String toDebugString(KEY?)?}) Widget
Provide the injected model using an InheritedWidget that wraps its state. [...]
inherited
initializeState() FutureOr<KEY>
Initialize the state
inherited
injectFutureMock(Future<KEY> fakeCreator()) → void
Inject a fake future implementation of this injected model. [...]
inherited
injectMock(KEY fakeCreator()) → void
Inject a fake implementation of this injected model. [...]
inherited
injectStreamMock(Stream<KEY> 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}) → KEY
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(KEY 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(KEY data)?, required R orElse(KEY 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<KEY?>
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(KEY s), {void onData(KEY data)?, void onError(dynamic error)?, On<void>? onSetState, void onRebuildState()?, SideEffects<KEY>? sideEffects, int debounceDelay = 0, int throttleDelay = 0, bool shouldAwait = false, bool skipWaiting = false, BuildContext? context, bool shouldOverrideDefaultSideEffects(SnapState<KEY> snap)?}) Future<KEY>
Mutate the state of the model and notify observers. [...]
inherited
subscribeToRM(void fn(SnapState<KEY>? 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(KEY 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