flutter-smell-async-navigation

Detect post-await navigation signals in Flutter Navigator/Router code paths.

Updated Nov 7, 2025
One-click install
npx skills add https://github.com/belluga/delphi-ai --skill flutter-smell-async-navigation
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: flutter-smell-async-navigation
Source: https://github.com/belluga/delphi-ai/tree/main/.cline/skills/flutter-smell-async-navigation
Command: npx skills add https://github.com/belluga/delphi-ai --skill flutter-smell-async-navigation

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

Flutter navigation can occur after async gaps or inside UI callbacks, creating ownership and timing issues that are hard to manage at the widget level.

Core Features & Use Cases

  • Detect post-await navigation signals and route changes that happen outside the intended control flow.
  • Enforce controller-driven navigation intents and guard-based routing to centralize decisions.
  • Apply across screens using Navigator/Router, with clear ownership boundaries between UI, controllers, and guards.

Quick Start

Guide Flutter teams to move navigation decisions from widgets to a central controller or route guard to ensure deterministic routing.

Frequently Asked Questions about flutter-smell-async-navigation

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I prevent Flutter navigation after async gaps?

Prevent Flutter navigation after async gaps by moving navigation decisions from UI widgets to central controllers or route guards, ensuring deterministic routing and clear ownership boundaries across your application.

Why does Flutter navigation break after an await in a UI callback?

Flutter navigation breaks after an await in a UI callback because async gaps create timing and ownership issues that are difficult to manage safely at the widget level during the widget lifecycle.

What is the best way to centralize Flutter routing logic with controllers and guards?

Centralize Flutter routing logic by enforcing controller-driven navigation intents and guard-based routing, establishing clear ownership boundaries between UI widgets, controllers, and route guards to detect post-await signals.

How do I detect post-await navigation signals in a Flutter Router setup?

Detect post-await navigation signals in a Flutter Router setup by applying techniques across code paths involving UI callbacks, awaits, and controller or guard-driven routing to identify route changes outside intended control flow.

Does this approach work with both Navigator and Router APIs in Flutter?

Yes, this approach works across screens using both Navigator and Router APIs in Flutter, applying clear ownership boundaries between UI, controllers, and guards to achieve deterministic routing outcomes.

When should I move navigation decisions out of Flutter UI widgets?

Move navigation decisions out of Flutter UI widgets when navigation occurs after async gaps or inside UI callbacks, creating ownership and timing issues that require central controller or route guard management.