Debugging Methods
Reactter provides a set of debugging methods to help you debug your states and dependencies in the finest detail.
Rt.initializeDevTools
The Rt.initializeDevTools
method initializes the Reactter DevTools for debugging purposes.
Only works in development mode.
Syntax
Rt.initializeDevTools();
Rt.initializeLogger
The Rt.initializeLogger
method initializes the Reactter logger for debugging purposes. Only works in development mode.
Syntax
Rt.initializeLogger({ String name = 'REACTTER', LogOutput output = dev.log,});
typedef LogOutput = void Function( String message, { required String name, required int level, StackTrace? stackTrace,});
Parameters
-
name
: (optional) The name of the logger. Default is'REACTTER'
. -
output
: (optional) The output function(LogOutput
) for the logger. Default isdev.log
.The Parameters of the output function(
LogOutput
) are:message
: The message to log.name
: The name of the logger.level
: The level of the log message. The levels are(Copy from package:logging ):-
0
: Special key to turn on logging for all levels. -
300
: Key for highly detailed tracing. -
400
: Key for fairly detailed tracing. -
500
: Key for tracing information. -
700
: Key for static configuration messages. -
800
: Key for informational messages. -
900
: Key for potential problems. -
1000
: Key for serious failures. -
1200
: Key for extra debugging loudness. -
2000
: Special key to turn off all logging.
-
stackTrace
: (optional) The stack trace of the log message.
Usage
You can customize the logger output function to log messages in your preferred way, e.g.:
Rt.initializeLogger( output: (String message, {required String name, required int level, StackTrace? stackTrace}) { print('[$name] $message'); },);
Or use another package like logging to log messages, e.g.:
void initializeLogger() { final logger = Logger('REACTTER'); final levelMapper = { for (final level in Level.LEVELS) level.value: level };
Rt.initializeLogger( output: (String message, {required String name, required int level, StackTrace? stackTrace}) { logger.log( levelMapper[level] ?? Level.INFO, message, name: name, stackTrace: stackTrace, ) }, );}
void main() { initializeLogger(); runApp(MyApp());}
Rt.addObserver
The Rt.addObserver
method adds an observer to the Reactter store to listen to the state or dependency lifecycle.
Syntax
Rt.addObserver(IObserver observer);
Parameters
observer
: The observer to add likeRtStateObserver
orRtDependencyObserver
.
Usage
You can add a RtStateObserver
to listen to the state lifecycle, e.g.:
final stateObserver = RtStateObserver( onChanged: (state) { print('State changed: $state'); },);
Rt.addObserver(stateObserver);
Or add a RtDependencyObserver
to listen to the dependency lifecycle, e.g.:
final dependencyObserver = RtDependencyObserver( onCreated: (dependency, instance) { print('Dependency created: $dependency'); },);
Rt.addObserver(dependencyObserver);
Rt.removeObserver
The Rt.removeObserver
method removes an observer from the Reactter store.
Syntax
Rt.removeObserver(IObserver observer);
Parameters
observer
: The observer to remove.
Usage
You can remove the observer added before, e.g.:
8 collapsed lines
final stateObserver = RtStateObserver( onChanged: (state) { print('State changed: $state'); },);
Rt.addObserver(stateObserver);// {...}Rt.removeObserver(stateObserver);