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

outdated

A starting point for Dart libraries or applications.

example/dime_example.dart

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

main() {
  Fimber.plantTree(DebugTree.elapsed());
  Fimber.i("Started app");
  Dime.installModule(ServiceModule());
  Fimber.i("Installed module");
  var scope = DimeScope("test");
  scope.installModule(ScopeModule());
  Dime.addScope(scope);

  MyTitleService titleService = Dime.inject();
  print(titleService.text());

  MyTitleService titleService2 = Dime.inject(tag: "Test tag");
  print(titleService2.text());

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

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

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

  scopeTitle = scope.inject<MyTitleService>();
  print(scopeTitle.text());

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

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

  Dime.closeScope(scope: scope);

  scopeDescription = scope.inject<MyDescriptionService>();
  print(scopeDescription.text());
}

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

class ServiceModule extends BaseAppInjectorModule {
  @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");
  }
}

class MyDescriptionService extends TextService {
  String description;

  MyDescriptionService({this.description = "My description"});

  @override
  int someNumber() {
    return 1;
  }

  @override
  String text() {
    return description;
  }
}

class MyTooltipService extends TextService {
  String tooltip;

  MyTooltipService({this.tooltip = "empty tooltip"}) {
    Fimber.i("Creatig instance of Tooltip Service: $tooltip");
  }

  @override
  int someNumber() {
    return tooltip.length;
  }

  @override
  String text() {
    return tooltip;
  }
}

class MyTitleService extends TextService {
  String title;

  MyTitleService({this.title = "My text title"}) {
    Fimber.i("Creating instance of MyTitleService: $title");
  }

  @override
  int someNumber() {
    return 0;
  }

  @override
  String text() {
    return this.title;
  }
}

abstract class TextService {
  String text();

  int someNumber();
}
5
likes
0
points
22
downloads

Publisher

unverified uploader

Weekly Downloads

A starting point for Dart libraries or applications.

Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

fimber

More

Packages that depend on dime