getInstance method

  1. @override
T getInstance({
  1. String? qualifier,
})
override

Implementation

@override
T getInstance({String? qualifier}) {
  qualifier ??= "default";
  // if not singleton, always create new instance
  if (!_singletons.contains(qualifier)) {
    if (kDebugMode) {
      print("New instance of $T with \"$qualifier\" qualifier");
    }
    final instance = _builders[qualifier]?.call();
    if (instance == null) {
      throw Exception("No builder for $T with \"$qualifier\" qualifier");
    } else {
      if (instance is Initializable) {
        instance.initialize();
      }
      return instance;
    }
  }
  T? instance = _instances[qualifier];
  if (instance != null) {
    return instance;
  } else {
    T? provided = _builders[qualifier]?.call();
    if (provided == null) {
      throw Exception("No builder for $T with \"$qualifier\" qualifier");
    } else if (provided is Initializable) {
      provided.initialize();
    }
    _instances[qualifier] = provided;
    if (kDebugMode) {
      print("Created $T with \"$qualifier\" qualifier");
    }
    return provided;
  }
}