flutter-getx-state-management
Simple and powerful reactive state management using GetX.
Installation
Follow the repository instructions for this skill and your agent. Review the files and dependencies before adding it to your workflow.
View source ↗GuidesSkill instructions
GetX State Management
Priority: P0 (CRITICAL)
Reactive and lightweight state management separating business logic from UI using GetX.
Structure
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
.obsfor observable variables (e.g.,final count = 0.obs;). - Wrap UI in
Obx(() => ...)to listen for changes. - For simple state, use
update()in controller andGetBuilderin UI.
- Use
-
Dependency Injection:
-
Bindings: Use
Bindingsclass to decouple DI from UI. -
Lazy Load: Prefer
Get.lazyPut(() => Controller())in Bindings. -
Lifecycle: Let GetX handle disposal. Avoid
permanent: true.
-
Bindings: Use
-
Hooks: Use
onInit(),onReady(),onClose()instead ofinitState/dispose. -
Architecture: Use
get_clifor modular MVVM (data, models, modules).
Anti-Patterns
-
Ctx in Logic: Pass no
BuildContextto 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
class UserController extends GetxController {
final name = "User".obs;
void updateName(String val) => name.value = val;
}
class UserView extends GetView<UserController> {
@override
Widget build(ctx) => Scaffold(
body: Obx(() => Text(controller.name.value)),
floatingActionButton: FloatingActionButton(
onPressed: () => controller.updateName("New"),
),
);
}
Related Topics
getx-navigation | layer-based-clean-architecture | dependency-injection
Examples
Read the usage examples in the source repository.
View source ↗Source history
- Indexed on
- 2026-01-20
- Index updated
- 2026-01-26
- Branch
- main
Index and sync dates describe this directory. View the source repository for code history.
GitHub ↗chat Comments (0)
Sign in to join the discussion and leave a comment.
No comments yet. Be the first to share your thoughts!