Welcome to flutter_it | flutter_it

Build reactive Flutter apps the easy way

No codegen, no boilerplate, just code.

flutter_it is a modular construction set of reactive tools for Flutter. Pick what you need, combine as you grow, or use them all together. Each package works independently and integrates seamlessly with the others.

flutter_it

🤖 AI-Assisted Development

Every flutter_it package ships with AI skill files that help Claude Code, Cursor, GitHub Copilot, and other AI tools generate correct code. Learn more →

  • Zero build_runner - No code generation, no waiting for builds
  • Pure Dart - Works with standard Flutter, no magic
  • Modular by design - Use one package or combine several—you choose
  • Built on ChangeNotifier and ValueNotifier - Seamless Flutter integration with familiar primitives
  • Type-safe - Full compile-time type checking
  • Battle-tested - Trusted by thousands of Flutter developers

See it in action

dart

// 1. Register services anywhere in your app (get_it)
final getIt = GetIt.instance;
getIt.registerSingleton(CounterModel());

// 2. Watch and react to changes automatically (watch_it)
class CounterWidget extends WatchingWidget {
  @override
  Widget build(BuildContext context) {
    final count = watchValue((CounterModel m) => m.count);
    return Text('Count: $count'); // Your widget automatically rebuilds on every change
  }
}

// 3. Use reactive collections (listen_it)
final items = ListNotifier<String>();
items.add('New item'); // Automatically notifies listeners

// 4. Encapsulate actions with commands (command_it)
final saveCommand = Command.createAsyncNoResult<UserData>(
  (userData) async => await api.save(userData),
);
// Access loading state, errors - all built-in

No setState(), no Provider boilerplate, no code generation. Just reactive Flutter.

The Construction Set

💡 Each package works standalone - start with one, add others as needed.

get_itget_it

Dependency injection without the framework

Simple service locator that works anywhere in your app—no BuildContext, no InheritedWidget trees, just clean dependency access.

Get started → | Examples →


watch_itwatch_it

Reactive UI updates, automatically

React to state changes without setState()—watch values and rebuild only what's needed. You'll almost never need a StatefulWidget anymore. Depends on get_it for service location.

Get started → | Examples →


command_itcommand_it

Encapsulate actions with built-in state

Commands that track execution, handle errors, and provide loading states automatically. Handle exceptions the smart way. Perfect for async operations.

Get started → | Examples →


listen_itlisten_it

Combine reactive state in an RxDart-like style that's easy to understand

Transform, filter, combine, and debounce operators for ValueNotifier—plus reactive collections (ListNotifier, MapNotifier, SetNotifier) that automatically notify on changes.

Get started → | Examples →


Getting Started

New to flutter_it? Start here:

  1. What to do with which package - Find the right tool for your needs
  2. Complete Documentation - Deep dive into each package
  3. Real-world Examples - See patterns in action

Community

Join the flutter_it community: