miodi 0.2.5 copy "miodi: ^0.2.5" to clipboard
miodi: ^0.2.5 copied to clipboard

discontinued
outdated

Dependency Injection tools for Dart.

example/lib/example.dart

import 'dart:async';

import 'package:miodi/miodi.dart';

main(List<String> arguments) async {
  Miodi.init([
    AppComponent(),
    // .. other components
  ]);
  Database database;
  Future<Database> databaseFuture = injectAsync();
  Logger logger = inject();
  logger.info('Load database...');
  database = await databaseFuture;

  UserInfo userInfo = scopeInject(AppComponent.userScope);
  //
  //
  //
  //
  clearScope(AppComponent.userScope);

}


class AppComponent extends MiodiComponent {
  static const String userScope = 'user';
  static const String namespace = 'app_component';

  @override
  List<MiodiModule> get modules => [
    module([
      factory(Logger, () => ConsoleLogger()),
      singleton(Database, () => DatabaseImpl(get())),
      scope(userScope, UserInfo, () => UserInfo())
    ]),
//    module([
//      ...other dependency
//    ])
  ];

  @override
  String get componentNamespace => namespace;
}

class ConsoleLogger implements Logger {
  @override
  void debug(String message) {
    print('Debug:: $message');
  }

  @override
  void error(String message) {
    print('Error:: $message');
  }

  @override
  void info(String message) {
    print('Info:: $message');
  }
}

class ScopeObject {}

abstract class Database {}

class DatabaseImpl implements Database {
  final Logger logger;

  DatabaseImpl(this.logger) {
    logger.info('Database loaded');
  }
}

class UserInfo {}

abstract class Logger {
  void debug(String message);
  void info(String message);
  void error(String message);
}
1
likes
0
pub points
0%
popularity

Publisher

unverified uploader

Dependency Injection tools for Dart.

Repository (GitHub)
View/report issues

License

unknown (LICENSE)

More

Packages that depend on miodi