bloc static method

Future<void> bloc()

Implementation

static Future<void> bloc() async {
  final blocName = InputService.getValidatedInput(
      consoleMessage: Constants.kEnterBlocName,
      errorMessage: Constants.kInvalidValue,
      functionValidator: Validator.isValidSingleString
  ).snakeCase();

  final blocClassName = blocName.toCamelCase();
  final path = DirectoryService.choosePath();

  FileService.createFile(
      filePath: '$path/${blocName}_bloc.dart',
      content: '''
part '${blocName}_event.dart';
part '${blocName}_state.dart';

class ${blocClassName}Bloc extends Bloc<${blocClassName}Event, ${blocClassName}State> {
${blocClassName}Bloc() : super(${blocClassName}Initial()) {
  on<Example>(_example);
}

Future<void> _example(
  Example event,
  Emitter<${blocClassName}State> emit
) async {

}
}
      '''
  );

  FileService.createFile(
      filePath: '$path/${blocName}_event.dart',
      content: '''
part of '${blocName}_bloc.dart';

sealed class ${blocClassName}Event extends Equatable {
const ${blocClassName}Event();

@override
List<Object> get props => [];
}

final class Example extends ${blocClassName}Event {}
      '''
  );

  FileService.createFile(
      filePath: '$path/${blocName}_state.dart',
      content: '''
part of '${blocName}_bloc.dart';

sealed class ${blocClassName}State extends Equatable {
@override
List<Object> get props => [];
}

final class ${blocClassName}Initial extends ${blocClassName}State {}

final class ${blocClassName}Loading extends ${blocClassName}State {}

final class ${blocClassName}Loaded extends ${blocClassName}State {}

final class ${blocClassName}Failure extends ${blocClassName}State {
${blocClassName}Failure(this.error);
final Object error;

@override
List<Object> get props => [error];
}
      '''
  );

  Console.writeLine(dcli.green('✅  Bloc successfully created!'));
}