Implement reactive state with GetX controllers, bindings, and observables in Flutter. Use when managing app state with GetxController, Obx, GetBuilder, or dependency lifecycle—not unit tests for existing controllers.
Scanned 9/4/2026
Install to Claude Code
npx -y skills add gabrielmoreira/agent-skills-mirror --skill flutter-getx-state-management --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Flutter Getx State Management?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/gabrielmoreira-flutter-getx-state-management)More formats (shields.io, HTML) on the badges page.
---
name: flutter-getx-state-management
description: Implement reactive state with GetX controllers, bindings, and observables in Flutter. Use when managing app state with GetxController, Obx, GetBuilder, or dependency lifecycle—not unit tests for existing controllers.
metadata:
triggers:
files:
- '**_controller.dart'
- '**/bindings/*.dart'
keywords:
- GetxController
- Obx
- GetBuilder
- .obs
- Get.put
- Get.find
- Get.lazyPut
---
# GetX State Management
## **Priority: P0 (CRITICAL)**
## Structure
```text
lib/app/modules/home/
├── controllers/
│ └── home_controller.dart
├── bindings/
│ └── home_binding.dart
└── views/
└── home_view.dart
```
## Implementation Guidelines
- **Controllers**: Extend `GetxController`. Store logic and state variables here.
- **Reactivity**:
- Use `.obs` for observable variables (e.g., `final count = 0.obs;`).
- Wrap UI in `Obx(() => ...)` to listen for changes.
- For simple state, use `update()` in controller and `GetBuilder` in UI.
- **Dependency Injection**:
- **Bindings**: Use `Bindings` class to decouple DI from UI.
- **Lazy Load**: Prefer `Get.lazyPut(() => Controller())` in Bindings.
- **Lifecycle**: Let GetX handle disposal. Avoid `permanent: true`.
- **Hooks**: Use `onInit()`, `onReady()`, `onClose()` instead of `initState`/`dispose`.
- **Architecture**: Use `get_cli` for modular MVVM (data, models, modules).
## Anti-Patterns
- **Ctx in Logic**: Pass no `BuildContext` to controllers.
- **Inline DI**: Avoid `Get.put()` in widgets; use Bindings + `Get.find`.
- **Fat Views**: Keep views pure UI; delegate all logic to controller.
## Code Example
See [references/controller-example.md](references/controller-example.md) for controller + view implementation pattern.
## Related Topics
getx-navigation | layer-based-clean-architecture | dependency-injection
## Controller boundary
- Keep `BuildContext` out of controllers. Use GetX services such as `Get.snackbar` for controller-owned feedback and expose reactive state to the view.
## Remediation anchors
- Remediation anchors: onInit, Obx, no BuildContext in the controller
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!