Skip to content

Why flutter_it?

  • 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:

Released under the MIT License.