Redstone.dart uses the di package to provide dependency injection.

To register a module, use the addModule() method:

import 'package:redstone/redstone.dart' as app;
import 'package:di/di.dart';

main() {
  app.addModule(new Module()
      ..bind(ClassA)
      ..bind(ClassB));

  app.setupConsoleLog();
  app.start();
}

Source code

For methods annotated with @Route, you can inject objects using the @Inject annotation:

@app.Route('/service')
service(@app.Inject() ClassA objA) {
 ...
}

Groups can require objects using a constructor:

@app.Group('/group')
class Group {
  ClassA objA;
  
  Group(ClassA this.objA);
  
  @app.Route('/service')
  service() {
    // ...
  }
}

Interceptors and error handlers can also require dependencies:

@app.Interceptor(r'/services/.+')
interceptor(ClassA objA, ClassB objB) {
  // ...
}


@app.ErrorHandler(404)
notFound(ClassB objB) {
  // ...
}