Navigation par liens profonds et URL
Apprenez à gérer les liens profonds et la navigation fondée sur les URL dans les applications Flutter afin que les liens externes et la barre d’adresse du Web dirigent les utilisateurs vers le bon écran.
Navigation par liens profonds et URL est une leçon Flutter Mobile Development gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Flutter Mobile Development, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Flutter Mobile Development comprend 4 leçons au total.
Certaines parties de cette leçon n'ont pas encore été traduites et s'affichent en anglais.
Why Deep Linking Matters
Deep linking lets an external source — an email, a notification, or a browser URL — open a specific screen inside your app instead of the home page.
- Improves user experience for shared content
- Essential for marketing campaigns and notifications
- On Flutter web, it ties your app to the browser URL bar
You will use a URL-based router to make this work cleanly.
Two Kinds of Deep Links
There are two common forms:
- Custom scheme links like
myapp://product/42 - Universal / App Links using real
https://URLs
Universal links are preferred because they fall back to a website if the app is not installed.
Meet the Router API
Flutter's Router API (Navigator 2.0) maps URLs to screens. Packages like go_router wrap it in a friendly declarative API.
You define routes with path patterns, and the router parses incoming URLs for you.
final router = GoRouter(
routes: [
GoRoute(path: '/', builder: (c, s) => HomeScreen()),
GoRoute(path: '/product/:id', builder: (c, s) => ProductScreen(s.pathParameters['id']!)),
],
);Path Parameters
The :id segment is a path parameter. When a user opens /product/42, you read it with state.pathParameters['id'].
This is how a deep link carries data into your screen.
GoRoute(
path: '/product/:id',
builder: (context, state) {
final id = state.pathParameters['id'];
return ProductScreen(productId: id!);
},
);Query Parameters
For optional values use query parameters: /search?q=phones&sort=price.
Read them via state.uri.queryParameters.
GoRoute(
path: '/search',
builder: (context, state) {
final q = state.uri.queryParameters['q'] ?? '';
return SearchScreen(query: q);
},
);Wiring the Router In
Use MaterialApp.router instead of MaterialApp so the app delegates navigation to the router.
MaterialApp.router(
routerConfig: router,
title: 'My App',
);Navigating Programmatically
You can still navigate from code with context.go() (replace stack) or context.push() (add to stack).
ElevatedButton(
onPressed: () => context.go('/product/42'),
child: const Text('Open product'),
);Android Configuration
For real https App Links on Android, add an intent-filter with autoVerify to AndroidManifest.xml and host an assetlinks.json file on your domain.
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="https" android:host="myapp.com" />
</intent-filter>iOS Configuration
On iOS, configure Associated Domains in Xcode with applinks:myapp.com and host an apple-app-site-association file at your domain root.
<!-- Associated Domains entitlement -->
applinks:myapp.comHandling Unknown Routes
Always provide an errorBuilder so a bad or unknown deep link shows a friendly 404 screen instead of crashing.
GoRouter(
routes: [...],
errorBuilder: (context, state) => const NotFoundScreen(),
);Redirects & Guards
Use the redirect callback to guard routes — for example send unauthenticated users from /profile to /login.
GoRouter(
redirect: (context, state) {
final loggedIn = auth.isLoggedIn;
if (!loggedIn && state.uri.path == '/profile') return '/login';
return null;
},
routes: [...],
);Quick Check
How do you read the value of id from a deep link matching /product/:id?
Recap
You learned how to add deep linking and URL navigation to a Flutter app:
- Custom scheme vs universal/App Links
- Path and query parameters with the Router API
- Native config on Android and iOS
- Error handling and route guards
Now external links and the browser URL bar can drive your app's navigation.
Questions Fréquemment Posées
La leçon « Navigation par liens profonds et URL » est-elle gratuite ?
Oui — le texte complet de « Navigation par liens profonds et URL » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Flutter Mobile Development, passe à CoddyKit PRO. Le cours Flutter Mobile Development comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Navigation par liens profonds et URL » ?
Apprenez à gérer les liens profonds et la navigation fondée sur les URL dans les applications Flutter afin que les liens externes et la barre d’adresse du Web dirigent les utilisateurs vers le bon éc… Tu pratiques Flutter Mobile Development avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Flutter Mobile Development ?
Aucune expérience préalable n'est requise. Flutter Mobile Development sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.
Combien de temps prend la leçon « Navigation par liens profonds et URL » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Flutter Mobile Development ?
Oui. Chaque leçon Flutter Mobile Development inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Navigation de base entre les pages
- Routes nommées et arguments
- TabBars et tiroirs de navigation
- Navigation par liens profonds et URL