Deep Link Yönlendirmesi Çalışmıyor: Flutter'da Navigation Sorunu Çözümü

Deep link çalışmıyorsa genellikle üç noktada sorun vardır: AndroidManifest.xml'de intent filter eksikliği, route tanımlaması hatalı veya test sırasında doğru URL kullanılmamış. Hepsini birlikte çözelim.

Android tarafında başla. AndroidManifest.xml dosyasına activity'nin içine intent filter eklemen gerekir. Bu, sistemin hangi URL'leri uygulamaya yönlendireceğini söyler.

1<activity
2android:name=".MainActivity"
3android:exported="true">
4<intent-filter>
5<action android:name="android.intent.action.VIEW" />
6<category android:name="android.intent.category.DEFAULT" />
7<category android:name="android.intent.category.BROWSABLE" />
8<data
9android:scheme="https"
10android:host="example.com"
11android:pathPrefix="/product" />
12</intent-filter>
13</activity>

Bu örnek `https://example.com/product/123` şeklindeki URL'leri yakalar. Host ve pathPrefix'i kendi domain'ine göre düzenle.

Flutter tarafında main.dart'da navigasyonu ayarla. MaterialApp'e onGenerateRoute callback'i ekle ve gelen deep link'i parse et.

Reklam · TEST
AdSense Test ReklamıYazı arası (gönderi içi) · Yazı arası
1void main() {
2runApp(const MyApp());
3}
4
5class MyApp extends StatelessWidget {
6const MyApp({Key? key}): super(key: key);
7
9Widget build(BuildContext context) {
10return MaterialApp(
11home: const HomePage(),
12onGenerateRoute: (settings) {
13if (settings.name?.startsWith('/product/')?? false) {
14final productId = settings.name!.split('/').last;
15return MaterialPageRoute(
16builder: (context) => ProductPage(id: productId),
17);
18}
19return null;
20},
21);
22}
23}
24
25class ProductPage extends StatelessWidget {
26final String id;
27const ProductPage({required this.id});
28
30Widget build(BuildContext context) {
31return Scaffold(
32appBar: AppBar(title: Text('Ürün: $id')),
33body: Center(child: Text('Ürün ID: $id')),
34);
35}

Test etmek için adb komutunu kullan:

1adb shell am start -W -a android.intent.action.VIEW -d "https://example.com/product/123" com.example.app

Beklenen çıktı: Uygulama açılıp doğrudan ProductPage'e gider ve "Ürün ID: 123" gösterilir.

Sık yapılan hatalar: AndroidManifest.xml'de android:exported="true" unutmak (Android 12+ gerekli), URL scheme'i http yerine https olarak ayarlamak, pathPrefix'i eğik çizgiyle başlatmamak. Deep link test ederken emülatör kullanıyorsan internet bağlantısı kontrol et; gerçek cihazda daha güvenilir sonuç alırsın.

Reklam · TEST
AdSense Test ReklamıGönderi altı · Görüntülü
konu hakkında tepkinizi verebilirsiniz