Mobile
1,807 installs
Implementing Navigation and Routing in Flutter
by flutter/skills
Handles routing, navigation, and deep linking in a Flutter application. Use when moving between screens or setting up URL-based navigation.
Skill content
Imperative and declarative routing patterns for Flutter screen transitions and deep linking. - Covers both Navigator (imperative, stack-based) and Router (declarative, URL-synchronized) approaches with guidance on when to use each - Supports deep linking on iOS, Android, and Web; includes data passing via constructors, route arguments, and return values - Implements nested navigation for multi-step flows (e.g., setup wizards) with independent sub-navigators and back-button interception - Provides three complete workflows: standard screen transitions, deep-linkable routing setup, and nested navigation flows with code examples Implementing Navigation and Routing in Flutter Contents - Core Concepts - Implementing Imperative Navigation - Implementing Declarative Navigation - Implementing Nested Navigation - Workflows - Examples Core Concepts - Routes: In Flutter, screens and pages are referred to as routes. A route is simply a widget. This is equivalent to an Activity in Android or a ViewController in iOS. - Navigator vs. Router: - Use Navigator (Imperative) for small applications without complex deep linking requirements. It manages a stack of Route objects. - Use Router (Declarative) for applications with advanced navigation, web URL synchronization, and specific deep linking requirements. - Deep Linking: Allows an app to open directly to a specific location based on a URL. Supported on iOS, Android, and Web. Web requires no additional setup. - Named Routes: Avoid using named routes (MaterialApp.routes and Navigator.pushNamed) for most applications. They have rigid deep linking behavior and do not support the browser forward button. Use a routing package like go_router instead. Implementing Imperative Navigation