blocTemplate function
Implementation
String blocTemplate(String feature) => '''
import 'package:bloc/bloc.dart';
import 'package:equatable/equatable.dart';
import 'package:workplanx/src/core/enums/enums.dart';
import 'package:workplanx/src/core/network/api_failure.dart';
import '../../domain/repo/${feature}_repository.dart';
import '../../data/model/request/${feature}_request.dart';
part '${feature}_event.dart';
part '${feature}_state.dart';
class ${_cap(feature)}Bloc extends Bloc<${_cap(feature)}Event, ${_cap(feature)}State> {
${_cap(feature)}Bloc(this._${feature}Repository) : super(const ${_cap(feature)}State()) {
on<${_cap(feature)}Fetched>(_onFetch${_cap(feature)}s);
}
final ${_cap(feature)}Repository _${feature}Repository;
Future<void> _onFetch${_cap(feature)}s(${_cap(feature)}Fetched event, Emitter<${_cap(feature)}State> emit) async {
emit(state.copyWith(fetchStatus: AppStatus.loading));
final response = await _${feature}Repository.fetch${_cap(feature)}s(
queryParam: event.queryParam,
);
response.fold(
(error) => emit(
state.copyWith(
fetchStatus: AppStatus.failure,
error: error,
),
),
(result) {
emit(
state.copyWith(
fetchStatus: AppStatus.success,
${feature}s: result.data,
nextPage: result.pagination?.currentPage ?? 0,
offSet: result.pagination?.offSet ?? 0,
totalPage: result.pagination?.totalPage ?? 0,
),
);
},
);
emit(state.copyWith(fetchStatus: AppStatus.complete));
}
}
''';