generateBlocController method

String generateBlocController(
  1. String name
)

Implementation

String generateBlocController(String name) {
  final className = toPascalCase(name);
  final variableName = toCamelCase(name);

  return '''
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:equatable/equatable.dart';
import '../../domain/entities/${toSnakeCase(name)}_entity.dart';
import '../../domain/usecases/${toSnakeCase(name)}_usecase.dart';

part '${toSnakeCase(name)}_event.dart';
part '${toSnakeCase(name)}_state.dart';

class ${className}Bloc extends Bloc<${className}Event, ${className}State> {
${className}Bloc(this._${variableName}UseCase) : super(${className}Initial()) {
  on<Load${className}s>(_onLoad${className}s);
  on<Refresh${className}s>(_onRefresh${className}s);
}

final ${className}UseCase _${variableName}UseCase;

Future<void> _onLoad${className}s(
  Load${className}s event,
  Emitter<${className}State> emit,
) async {
  emit(${className}Loading());
  try {
    final result = await _${variableName}UseCase();
    emit(${className}Loaded(result));
  } catch (e) {
    emit(${className}Error(e.toString()));
  }
}

Future<void> _onRefresh${className}s(
  Refresh${className}s event,
  Emitter<${className}State> emit,
) async {
  emit(${className}Loading());
  try {
    final result = await _${variableName}UseCase();
    emit(${className}Loaded(result));
  } catch (e) {
    emit(${className}Error(e.toString()));
  }
}
}
''';
}