bloc_meta_generator 1.0.0 copy "bloc_meta_generator: ^1.0.0" to clipboard
bloc_meta_generator: ^1.0.0 copied to clipboard

Code generator for bloc_meta package

bloc_meta_generator #

Code generator for bloc_meta. This package processes @BlocMeta, @CubitMeta, and @EventMeta annotations to generate boilerplate code for BLoC and Cubit classes.

Features #

  • Generates BLoC classes with event handling logic.
  • Generates Cubit classes.
  • Generates Event classes (sealed class hierarchy).
  • Generates copyWith, toString, hashCode, and == overrides for states and events (configurable).

Getting started #

Add bloc_meta_generator to your dev_dependencies:

dev_dependencies:
  bloc_meta_generator: ^1.0.0
  build_runner: ^2.10.0

Usage #

Run the build runner to generate code:

dart run build_runner build

Or watch for changes:

dart run build_runner watch

Configuration #

You can configure the generator globally in your build.yaml file. The following options are available:

Option Type Default Description
copyWith bool true Generates copyWith method for the class.
overrideToString bool true Overrides toString method.
overrideEquality bool true Overrides operator == and hashCode.

Example build.yaml:

targets:
  $default:
    builders:
      bloc_meta_generator:
        options:
          copyWith: true
          overrideToString: false
          overrideEquality: true

Examples #

BLoC

Input:

import 'package:bloc_meta/bloc_meta.dart';
import 'package:flutter_bloc/flutter_bloc.dart';

part 'counter_bloc.g.dart';


@EventMeta()
sealed class CounterBlocEvent {
  const factory CounterBlocEvent.increment() = _$CounterIncrement;
  const factory CounterBlocEvent.decrement() = _$CounterDecrement;
}

@BlocMeta<CounterEvent, int>()
class CounterBloc extends _$CounterBloc {
  CounterBloc() : super(0);

  @override
  void _onIncrement(_$CounterIncrement event, Emitter<int> emit) {
    emit(state + 1);
  }

  @override
  void _onDecrement(_$CounterDecrement event, Emitter<int> emit) {
    emit(state - 1);
  }
}

Generated Output (counter_bloc.g.dart):

// GENERATED CODE - DO NOT MODIFY BY HAND

part of 'counter_bloc.dart';


final class _$CounterIncrement extends CounterBlocEvent {
  const _$CounterIncrement();
}

final class _$CounterDecrement extends CounterBlocEvent {
  const _$CounterDecrement();
}

abstract class _$CounterBloc extends Bloc<CounterBlocEvent, int> {
  _$CounterBloc(super.initialState) {
    on<_$CounterIncrement>(_onIncrement);
    on<_$CounterDecrement>(_onDecrement);
  }

  void _onIncrement(_$CounterIncrement event, Emitter<int> emit);

  void _onDecrement(_$CounterDecrement event, Emitter<int> emit); 
}

Cubit

Input:

import 'package:bloc_meta/bloc_meta.dart';
import 'package:flutter_bloc/flutter_bloc.dart';

part 'counter_cubit.g.dart';

@CubitMeta<int>()
class CounterCubit extends _$CounterCubit {
  CounterCubit() : super(0);

  void increment() => emit(state + 1);
  void decrement() => emit(state - 1);
}

Generated Output (counter_cubit.g.dart):

// GENERATED CODE - DO NOT MODIFY BY HAND

part of 'counter_cubit.dart';

abstract class _$CounterCubit extends Cubit<int> {
  _$CounterCubit(super.initialState);
}
1
likes
120
points
144
downloads

Publisher

unverified uploader

Weekly Downloads

Code generator for bloc_meta package

Topics

#bloc #cubit #codegen #flutter #dart

Documentation

API reference

License

MIT (license)

Dependencies

analyzer, bloc_meta, build, build_config, code_builder, dart_style, source_gen

More

Packages that depend on bloc_meta_generator