Orientação gerada a partir de informações públicas. Apenas para referência.
command_it é uma solução de gerenciamento de estado baseada no `ValueListenable` e no padrão de design Command, oferecendo uma maneira limpa e reativa de lidar com mudanças de estado em aplicativos Flutter. Originalmente conhecido como flutter_command, fornece uma abordagem estruturada para gerenciar operações assíncronas e atualizações de estado. O pacote promove a separação de preocupações encapsulando ações dentro de comandos, tornando o código mais testável e sustentável. Integra-se perfeitamente com o framework reativo do Flutter e suporta todas as principais plataformas.
Casos de uso
Gerenciando operações assíncronas, como chamadas de API
Manipulação de envios de formulários
Implementando funcionalidade de desfazer/refazer
Coordenando mudanças de estado entre múltiplos widgets
Construindo camadas de lógica de negócios reutilizáveis
Principais recursos
Estado reativo por meio de ValueListenable
Padrão de comando para ações encapsuladas
Suporte integrado para estados de carregamento, erro e sucesso
Integração fácil com a árvore de widgets do Flutter
Compatibilidade multiplataforma
Indicado para
Desenvolvedores procurando uma alternativa leve de gerenciamento de estado
Equipes que desejam separação clara entre a interface do usuário e a lógica de negócios
Projetos que exigem transições de estado previsíveis
Aplicativos com operações assíncronas frequentes
Fluxos de trabalho de desenvolvimento orientado por testes
Considerações
Pode exigir uma curva de aprendizado para novos usuários desconhecidos com o padrão Command
Menos adequado para necessidades de estado muito simples
Ecossistema limitado em comparação com soluções maiores de gerenciamento de estado
Melhor combinado com outras ferramentas para arquitetura completa do aplicativo
README original
Snapshot do README original do repositório-fonte vinculado. Consulte o repositório para o conteúdo mais recente.
Command pattern for Flutter - wrap functions as observable objects with automatic state management
Commands replace async methods with reactive alternatives. Wrap your functions, get automatic loading states, error handling, and UI integration. No manual state tracking, no try/catch everywhere.
Call them like functions. React to their state. Simple as that.
Part of flutter_it — A construction set of independent packages. command_it works standalone or combines with watch_it for reactive UI updates.
Why Commands?
🎯 Declarative — Wrap functions, get observable execution state automatically
⚡ Automatic State — isRunning, value, errors tracked without manual code
🛡️ Smart Error Handling — Route errors globally/locally with filters
Chain commands together with the pipeToCommand() extension. When the source completes successfully, it automatically triggers the target command:
// Trigger refresh after save completes
saveCommand.pipeToCommand(refreshCommand);
// Transform result before passing to target
userIdCommand.pipeToCommand(fetchUserCommand, transform: (id) => UserRequest(id));
// Pipe from any ValueListenable - track execution state changes
longRunningCommand.isRunning.pipeToCommand(spinnerStateCommand);
The pipeToCommand() extension works on any ValueListenable, including commands, isRunning, results, or plain ValueNotifier. Returns a ListenableSubscription for manual cancellation if needed.
⚠️ Warning: Circular pipes (A→B→A) cause infinite loops. Ensure your pipe graph is acyclic.
Ecosystem Integration
Built on listen_it — Commands are ValueListenable objects, so they work with all listen_it operators (map, debounce, where, etc.).
// Register with get_it
di.registerLazySingleton(() => TodoManager());
// Use commands in your managersclassTodoManager{
final loadTodosCommand = Command.createAsyncNoParam<List<Todo>>(
() => api.fetchTodos(),
[],
);
// Debounce search with listen_it operatorsfinal searchCommand = Command.createSync<String, String>((s) => s, '');
TodoManager() {
searchCommand.debounce(Duration(milliseconds: 500)).listen((term, _) {
loadTodosCommand.run();
});
}
}
Want more? Combine with other flutter_it packages:
listen_it — Required dependency. ValueListenable operators and reactive collections.
Optional: watch_it — State management. Watch commands reactively without builders: watchValue((m) => m.loadCommand).
Optional: get_it — Service locator for dependency injection. Access managers with commands from anywhere: di<TodoManager>().
💡 flutter_it is a construction set — command_it works standalone. Add watch_it and get_it when you need reactive UI and dependency injection.
This package ships an Agent Skill for AI coding assistants
(Claude Code, Cursor, GitHub Copilot, Codex, Gemini CLI and others) in skills/command-it-expert/.
It teaches them the critical rules, common patterns and anti-patterns of command_it.
Install it into your project with the official Dart skills tool:
dart run skills@ get
For the ecosystem-wide skills (architecture guidance, feed/data-source patterns, overview)
and the skills of the other flutter_it packages run: