generateBlocBinding method

String generateBlocBinding(
  1. String name
)

Implementation

String generateBlocBinding(String name) {
  final className = toPascalCase(name);

  return '''
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:get_it/get_it.dart';
import '../../data/datasources/${toSnakeCase(name)}_remote_data_source.dart';
import '../../data/repositories/${toSnakeCase(name)}_repository_impl.dart';
import '../../domain/repositories/${toSnakeCase(name)}_repository.dart';
import '../../domain/usecases/${toSnakeCase(name)}_usecase.dart';
import '../bloc/${toSnakeCase(name)}_bloc.dart';

class ${className}Provider {
static void init() {
  final getIt = GetIt.instance;

  // Data Sources
  getIt.registerLazySingleton<${className}RemoteDataSource>(
    () => ${className}RemoteDataSourceImpl(),
  );

  // Repositories
  getIt.registerLazySingleton<${className}Repository>(
    () => ${className}RepositoryImpl(getIt()),
  );

  // Use Cases
  getIt.registerLazySingleton<${className}UseCase>(
    () => ${className}UseCase(getIt()),
  );

  // BLoC
  getIt.registerFactory<${className}Bloc>(
    () => ${className}Bloc(getIt()),
  );
}

static BlocProvider<${className}Bloc> provide({
  required Widget child,
}) {
  return BlocProvider<${className}Bloc>(
    create: (context) => GetIt.instance<${className}Bloc>()..add(const Load${className}s()),
    child: child,
  );
}
}
''';
}