Skip to content

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 is dev.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

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);