← Back to list

flutter-getx-state-management
by HoangNguyen0403
A collection of Agent Skills Standard and Best Practice for Programming Languages, Frameworks that help our AI Agent follow best practies on frameworks and programming laguages
⭐ 111🍴 40📅 Jan 23, 2026
SKILL.md
name: Flutter GetX State Management description: Simple and powerful reactive state management using GetX. metadata: labels: [flutter, state-management, getx, controller, reactive] triggers: files: ['_controller.dart', '/bindings/*.dart'] keywords: [GetxController, Obx, GetBuilder, .obs, Get.put, Get.find, Get.lazyPut]
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
Score
Total Score
85/100
Based on repository quality metrics
✓SKILL.md
SKILL.mdファイルが含まれている
+20
✓LICENSE
ライセンスが設定されている
+10
✓説明文
100文字以上の説明がある
+10
✓人気
GitHub Stars 100以上
+5
✓最近の活動
1ヶ月以内に更新
+10
✓フォーク
10回以上フォークされている
+5
✓Issue管理
オープンIssueが50未満
+5
✓言語
プログラミング言語が設定されている
+5
✓タグ
1つ以上のタグが設定されている
+5
Reviews
💬
Reviews coming soon

