Skip to content
Back to skills

Getx State Management

ASecurity

Simple and powerful reactive state management using GetX.

  • 8 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 8, 2026
ai-agentsreact

Works with

  • cli

Security analysis

A100/100

Pro scans all 3 files and shows the line behind each finding

Scanned September 8, 2026

npx -y skills add ngxtm/devkit --skill getx-state-management --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Getx State Management?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Getx State Management
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/ngxtm-getx-state-management/badge)](https://www.skillsdirectory.com/skills/ngxtm-getx-state-management)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: Flutter GetX State Management
description: Simple and powerful reactive state management using GetX.
metadata:
  labels: [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

```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

```dart
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"),
    ),
  );
}
```

## Reference & Examples

For DI Bindings and Reactive patterns:
See [references/binding-example.md](references/binding-example.md) and [references/reactive-vs-simple.md](references/reactive-vs-simple.md).

## Related Topics

getx-navigation | feature-based-clean-architecture | dependency-injection

Files in this skill

  • SKILL.md2.3 KB
  • references/binding-example.md793 B
  • references/reactive-vs-simple.md847 B

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…