createBlocFiles method

void createBlocFiles(
  1. String featureName,
  2. String basePath
)

Implementation

void createBlocFiles(String featureName, String basePath) {
  final snakeCaseName = toSnakeCase(featureName);
  final blocFile =
      File('$basePath/presentation/bloc/${snakeCaseName}_bloc.dart');
  final eventFile =
      File('$basePath/presentation/bloc/${snakeCaseName}_event.dart');
  final stateFile =
      File('$basePath/presentation/bloc/${snakeCaseName}_state.dart');

  final classNamePrefix =
      featureName[0].toUpperCase() + featureName.substring(1);
  final packageName = getPackageName(basePath);

  if (!blocFile.existsSync()) {
    blocFile.writeAsStringSync('''
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:$packageName/features/$featureName/presentation/bloc/${snakeCaseName}_event.dart';
import 'package:$packageName/features/$featureName/presentation/bloc/${snakeCaseName}_state.dart';

class ${classNamePrefix}Bloc extends Bloc<${classNamePrefix}Event, ${classNamePrefix}State> {
${classNamePrefix}Bloc() : super(${classNamePrefix}Initial()) {
  on<${classNamePrefix}Event>((event, emit) {
    // TODO: implement event handler
  });
}
}
''');
    print('Created bloc file: ${snakeCaseName}_bloc.dart');
  }

  if (!eventFile.existsSync()) {
    eventFile.writeAsStringSync('''
import 'package:equatable/equatable.dart';

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

@override
List<Object> get props => [];
}
''');
    print('Created event file: ${snakeCaseName}_event.dart');
  }

  if (!stateFile.existsSync()) {
    stateFile.writeAsStringSync('''
import 'package:equatable/equatable.dart';

sealed class ${classNamePrefix}State extends Equatable {
const ${classNamePrefix}State();

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

final class ${classNamePrefix}Initial extends ${classNamePrefix}State {}
''');
    print('Created state file: ${snakeCaseName}_state.dart');
  }
}