generateBlocEventTemplate method

String generateBlocEventTemplate(
  1. ApiGenerationConfig config
)

Generates BLoC event template.

Creates event classes for triggering API operations with proper stream control events for SSE methods.

Parameters:

  • config: API generation configuration

Implementation

String generateBlocEventTemplate(ApiGenerationConfig config) {
  final bodyClass =
      typeResolver.resolveBodyClass(config.apiClassName, config.bodyList);

  return '''part of '${config.apiName}_bloc.dart';

@immutable
abstract class ${config.apiClassName}Event extends Equatable {}

class Fetch${config.apiClassName} extends ${config.apiClassName}Event {
Fetch${config.apiClassName}(this.body, {this.headers, this.extra, ${typeResolver.isApplyCacheStrategy(config.method) ? 'this.cacheStrategy,' : ''}});

final $bodyClass body;
final Map<String, String>? headers;
final dynamic extra;
${typeResolver.isApplyCacheStrategy(config.method) ? 'final CacheStrategy? cacheStrategy;' : ''}

@override
List<Object?> get props => [body, headers, extra, ${typeResolver.isApplyCacheStrategy(config.method) ? 'cacheStrategy,' : ''}];
}

class Cancel${config.apiClassName} extends ${config.apiClassName}Event {
Cancel${config.apiClassName}({this.extra});

final dynamic extra;

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

${typeResolver.whenMethod(
    config.method,
    onStream: () {
      return '''class Pause${config.apiClassName} extends ${config.apiClassName}Event {
Pause${config.apiClassName}({this.extra});

final dynamic extra;

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

class Resume${config.apiClassName} extends ${config.apiClassName}Event {
Resume${config.apiClassName}({this.extra});

final dynamic extra;

@override
List<Object?> get props => [extra];
}''';
    },
    onFuture: () => '',
  )}''';
}