dime 0.7.0 copy "dime: ^0.7.0" to clipboard
dime: ^0.7.0 copied to clipboard

Dime is Dependency getion for Dart, allows to define modules with signle/creator inejction factories, allows String tagging and simple Scope tree.

example/dime_example.dart

import 'package:dime/dime.dart';
import 'package:fimber/fimber.dart';

import '../test/common.dart';

/// Example app showing Dime installation and usage
void main() {
  Fimber.plantTree(DebugTree.elapsed());
  Fimber.i("Started app");
  dimeInstall(ServiceModule());
  Fimber.i("Installed module");
  var scope = dimeOpenScope("test");
  scope.installModule(ScopeModule());

  // ignore: omit_local_variable_types
  MyTitleService titleService = dimeGet();
  print(titleService.text());

  // ignore: omit_local_variable_types
  MyTitleService titleService2 = dimeGetWithTag("Test tag");
  print(titleService2.text());

  var creatorService = dimeGet<TextService>();
  print(creatorService.text());

  creatorService = dimeGet<TextService>(tag: "TEST TAG A");
  print(creatorService.text());

  var scopeTitle = dimeGet<MyTitleService>();
  print(scopeTitle.text());

  scopeTitle = dimeGet<MyTitleService>();
  print(scopeTitle.text());

  var tooltip = dimeGet<MyTooltipService>();
  print(tooltip.text());

  var scopeDescription = scope.get<MyDescriptionService>();
  print(scopeDescription.text());

  dimeCloseScope(scope: scope);

  try {
    scopeDescription = scope.get<MyDescriptionService>();
    print(scopeDescription.text());
  } on DimeException catch (e, t) {
    // expected thrown exception
    print("Expected exception: $e,\n$t");
  }
}

class ScopeModule extends BaseDimeModule {
  @override
  void updateInjections() {
    addSingle(MyTitleService(title: "test scope service"));
  }
}

class ServiceModule extends BaseDimeModule {
  @override
  void updateInjections() {
    addSingle(MyTitleService());
    addSingle(MyTitleService(title: "second title"), tag: "Test tag");
    addSingleByCreator((tag) => MyDescriptionService());
    addCreator<TextService>((tag) =>
        MyTitleService(title: "Test title: $tag: now- ${DateTime.now()}"));
    addFactory(MyTooltipService, MyCustomFactory());
  }
}

class MyCustomFactory extends InjectFactory<TextService> {
  @override
  TextService create() {
    return MyTooltipService(tooltip: "My custom factory tooltip");
  }
}
5
likes
135
pub points
0%
popularity

Publisher

unverified uploader

Dime is Dependency getion for Dart, allows to define modules with signle/creator inejction factories, allows String tagging and simple Scope tree.

Repository (GitHub)
View/report issues

Documentation

API reference

License

Apache-2.0 (LICENSE)

More

Packages that depend on dime