Installable skillMIT

GetX Navigation

Context-less navigation, named routes, and middleware using GetX.

BY ngxtmUPDATED Oct 27, 2026
INTENDED FOR✳Claude Code>_Codex↗Cursor◎ChatGPTInstall in a listed agent.

instructions.md

---
name: flutter-getx-navigation
description: Context-less navigation, named routes, and middleware using GetX.
metadata:
  labels: [navigation, getx, routing, middleware]
  triggers:
    files: ['**/app_pages.dart', '**/app_routes.dart']
    keywords: [GetPage, Get.to, Get.off, Get.offAll, Get.toNamed, GetMiddleware]
---

# GetX Navigation

## **Priority: P0 (CRITICAL)**

Decoupled navigation system allowing UI transitions without `BuildContext`.

## Implementation Guidelines

- **Prefer Named Routes**: Use `Get.toNamed('/path')` for better maintainability. Define routes in a centralized `AppPages` class.
- **No Context Navigation**: Leverage `Get.to()`, `Get.back()`, etc., directly from controllers.
- **Navigation Methods**:
  - `Get.to()`: Navigate to next screen.
  - `Get.off()`: Navigate and replace current screen (e.g., Splash -> Home).
  - `Get.offAll()`: Clear stack and navigate (e.g., Logout -> Login).
  - `Get.back()`: Close current screen, dialog, or bottom sheet.
- **Bindings Everywhere**: Always link routes with `Bindings` to manage controller lifecycles.
- **Middleware**: Use `GetMiddleware` for route guards (Auth, Permissions) instead of logic inside views.

## Code Example

```dart
// Route Definition
static final routes = [
  GetPage(
    name: _Paths.HOME,
    page: () => HomeView(),
    binding: HomeBinding(),
    middlewares: [AuthMiddleware()],
  ),
];

// Usage in Controller
void logout() {
  _authService.clear();
  Get.offAllNamed(Routes.LOGIN);
}

// Route Guard
class AuthMiddleware extends GetMiddleware {
  @override
  RouteSettings? redirect(String? route) {
    return isAuthenticated ? null : RouteSettings(name: Routes.LOGIN);
  }
}
```

## Anti-Patterns

- **Mixing Context and GetX**: Do not use `Navigator.of(context)` when GetX is the primary router.
- **Hardcoded Strings**: Always use a `Routes` constant class for names.
- **Dialogs without GetX**: Use `Get.dialog()` and `Get.snackbar()` for consistency.

## Reference & Examples

For centralized route configuration and middleware guards:
See [references/app-pages.md](references/app-pages.md) and [references/middleware-example.md](references/middleware-example.md).

## Related Topics

getx-state-management | feature-based-clean-architecture
COMPATIBILITY & REFERENCES

Platform guidance

Imported from the listed AgentSkill.sh category. Complete supplied package files and notices are retained. Required external tools and credentials are not installed. No bundled code was executed during import. Individual agent task behavior has not been tested.