Skip to content

Commit

Permalink
feat: Add InitializableSingletonDependency (#9)
Browse files Browse the repository at this point in the history
Add InitializableSingletonDependency
  • Loading branch information
ferrarafer committed Jun 7, 2023
1 parent 0cac536 commit 5b34ec0
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 0 deletions.
@@ -0,0 +1,30 @@
import 'dependency_config.dart';
import 'package:stacked_generator/src/generators/extensions/environments_extract_extension.dart';
import 'package:stacked_generator/src/generators/extensions/string_utils_extension.dart';

class InitializableSingletonDependency extends DependencyConfig {
const InitializableSingletonDependency({
required String import,
required String className,
String? abstractedImport,
String? abstractedTypeClassName,
Set<String>? environments,
String? instanceName,
}) : super(
instanceName: instanceName,
import: import,
className: className,
abstractedImport: abstractedImport,
abstractedTypeClassName: abstractedTypeClassName,
environments: environments,
);

@override
String registerDependencies(String locatorName) {
return '''
final $camelCaseClassName = $className();
await $camelCaseClassName.init();
$locatorName.registerSingleton${abstractedTypeClassName.surroundWithAngleBracketsOrReturnEmptyIfNull}($camelCaseClassName ${environments.getFromatedEnvs}${instanceName.addInstanceNameIfNotNull});
''';
}
}
11 changes: 11 additions & 0 deletions lib/src/generators/getit/dependency_config_factory.dart
Expand Up @@ -12,6 +12,7 @@ import 'package:stacked_generator/src/generators/getit/stacked_locator_parameter
import '../../../utils.dart';
import 'dependency_config/dependency_config.dart';
import 'dependency_config/factory_param_dependency.dart';
import 'dependency_config/initializable_singleton_dependency.dart';
import 'dependency_config/lazy_singleton.dart';

class DependencyConfigFactory {
Expand Down Expand Up @@ -113,6 +114,16 @@ class DependencyConfigFactory {
abstractedImport: abstractedImport,
environments: environments,
presolveFunction: presolveObject?.displayName);
} else if (dependencyReader
.instanceOf(const TypeChecker.fromRuntime(InitializableSingleton))) {
return InitializableSingletonDependency(
instanceName: instanceName,
import: import!,
className: className,
abstractedTypeClassName: abstractedTypeClassName,
abstractedImport: abstractedImport,
environments: environments,
);
} else {
final Set<FactoryParameter> clazzParams = {};
var params = constructor?.parameters;
Expand Down

0 comments on commit 5b34ec0

Please sign in to comment.