ease_generator 0.3.0 copy "ease_generator: ^0.3.0" to clipboard
ease_generator: ^0.3.0 copied to clipboard

Code generator for ease_state_helper Flutter state management library. Generates providers and context extensions from @Ease() annotations.

Ease Generator #

pub package License: MIT

Code generator for Ease State Helper.

Installation #

dependencies:
  ease_state_helper: ^0.2.0
  ease_annotation: ^0.2.0

dev_dependencies:
  ease_generator: ^0.2.0
  build_runner: ^2.4.0

Usage #

1. Annotate your ViewModel #

import 'package:ease_annotation/ease_annotation.dart';
import 'package:ease_state_helper/ease_state_helper.dart';

part 'counter_view_model.ease.dart';

@ease
class CounterViewModel extends StateNotifier<int> {
  CounterViewModel() : super(0);
  void increment() => state++;
}

2. Run generator #

dart run build_runner build

3. Use generated code #

import 'counter_view_model.dart';

void main() {
  runApp(
    CounterViewModelProvider(
      child: const MyApp(),
    ),
  );
}

// In widgets:
final counter = context.counterViewModel; // Watch (rebuilds on change)
context.readCounterViewModel().increment(); // Read (no rebuild)

Generated Files #

  • *.ease.dart - Provider widget and context extensions per ViewModel

What Gets Generated #

For each @ease annotated class, the generator creates:

  • {ClassName}Provider - StatefulWidget that manages the ViewModel lifecycle
  • _{ClassName}Inherited - InheritedModel for efficient state propagation
  • Context extensions:
    • context.className - Watch state (rebuilds widget on changes)
    • context.readClassName() - Read state without subscribing
    • context.selectClassName((s) => s.field) - Selective rebuilds

Nesting Multiple Providers #

Use EaseScope to nest multiple providers:

void main() {
  runApp(
    EaseScope(
      providers: [
        (child) => CounterViewModelProvider(child: child),
        (child) => UserViewModelProvider(child: child),
        (child) => CartViewModelProvider(child: child),
      ],
      child: const MyApp(),
    ),
  );
}

Or nest them manually:

void main() {
  runApp(
    CounterViewModelProvider(
      child: UserViewModelProvider(
        child: CartViewModelProvider(
          child: const MyApp(),
        ),
      ),
    ),
  );
}

License #

MIT

0
likes
150
points
165
downloads

Publisher

verified publisherwidget-lab.dev

Weekly Downloads

Code generator for ease_state_helper Flutter state management library. Generates providers and context extensions from @Ease() annotations.

Repository (GitHub)
View/report issues
Contributing

Topics

#state-management #code-generation #build-runner

Documentation

API reference

License

MIT (license)

Dependencies

analyzer, build, ease_annotation, source_gen

More

Packages that depend on ease_generator