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

discontinued
outdated

Dependency Injection tools for Dart.

example/lib/main.dart

import 'package:example/components.dart';
import 'package:example/consts.dart';
import 'package:miodi/miodi.dart';

main(List<String> arguments) async {
  Miodi.init([AppComponent()]);
  var logger = await Miodi.injectAsync<Logger>();
//  var logger = await injectAsync<Logger>();

  UserController controller = Miodi.inject();
//  UserController controller = inject();

  logger.log(controller.currentUser.id);
  logger.log(controller.currentUser.name);

  controller.currentUser.name = 'new_name';

  logger.log(controller.currentUser.id);
  logger.log(controller.currentUser.name);

  var currentUser = inject<User>(currentUserProvider);

  logger.log('User:: ${currentUser.id}');
  logger.log('User:: ${currentUser.name}');
}

class AppComponent extends MiodiComponent {
  AppComponent() : super([controllerModule, appModule, loggerModule]);
}

final controllerModule =
    module(providers: [factory(UserController, () => UserController())]);

final appModule = module(
  providers: [
    singleton(User, () => User('0', 'currentUser'),
        name: currentUserProvider)
  ],
);

final loggerModule = LoggerModule();

class LoggerModule extends MiodiModule {
  static const _filePath = 'assets/file';

  LoggerModule()
      : super(asyncProviders: [
          asyncSingleton(Logger, () async {
            var file = await loadFile(_filePath);
            return FileLogger(file);
          }, initOnStart: true)
        ]);
}

Future<String> loadFile(String filePath) async {
  await Future.delayed(Duration(seconds: 1));
  return filePath;
}
1
likes
0
pub points
0%
popularity

Publisher

unverified uploader

Dependency Injection tools for Dart.

Repository (GitHub)
View/report issues

License

unknown (LICENSE)

Dependencies

meta

More

Packages that depend on miodi