2

I do want to use the packages get_it and injectable. They are both wonderful, but I'm facing a issue. Maybe my idea is wrong.

My application has two singletons and I want to use different base urls for different app flavors. So I added a parameter to the singleton constructor with the baseUrl value.

The problem is now, that injectable has only @factoryParam as annotation. The name shows the problem. It's not for singletons.

What will be the best practice for that issue? Should I get rid of constructor injection and inject the baseUrl within the singleton like

var url = get_it.get<Config>();

or is that not the best idea?

mars3142
  • 2,501
  • 4
  • 28
  • 58

1 Answers1

1

It can be achievied in few ways, you can register different strings for different env e.g.

@Environment("dev")
@Named("url") // in case if you injecting other strings
String get devUrl...

@Environment("stage")
@Named("url") // in case if you injecting other strings
String get stageUrl...

[Update with example]

@Environment("dev")
@injectable
class ExampleOne{
final String _url;

ExampleOne(@Named("url") this._url)
}

@Environment("stage")
@injectable
class ExampleTwo{
final String _url;

ExampleTwo(@Named("url") this._url);
}

or just one class:

@injectable
class Example{
final String _url;
Example(@Named("url") this._url);
}