flutter如何设置deeplink
在Flutter中如何设置Deeplink?具体步骤是什么?需要哪些依赖和配置?在Android和iOS平台上分别要如何处理?有没有完整的示例代码可以参考?
2 回复
在Flutter中设置DeepLink需要以下步骤:
- 配置AndroidManifest.xml(Android)和Info.plist(iOS),添加URL Scheme和Intent Filter。
- 使用uni_links或go_router等插件处理路由。
- 在Flutter代码中监听并解析传入的链接,跳转到对应页面。
示例代码:
import 'package:uni_links/uni_links.dart';
void initUniLinks() {
getInitialLink().then((uri) {
// 处理初始链接
});
linkStream.listen((uri) {
// 处理后续链接
});
}
更多关于flutter如何设置deeplink的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在Flutter中设置Deep Link(深度链接)可以通过以下步骤实现:
1. 配置Android端
在 android/app/src/main/AndroidManifest.xml 中,为启动的Activity添加intent-filter:
<activity
android:name=".MainActivity"
android:launchMode="singleTop">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:scheme="yourapp"
android:host="example.com" />
</intent-filter>
</activity>
将 yourapp 和 example.com 替换为你的应用标识。
2. 配置iOS端
在 ios/Runner/Info.plist 中添加:
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLName</key>
<string>yourapp.example.com</string>
<key>CFBundleURLSchemes</key>
<array>
<string>yourapp</string>
</array>
</dict>
</array>
3. Flutter代码处理
使用 uni_links 包处理链接:
- 添加依赖到
pubspec.yaml:
dependencies:
uni_links: ^0.5.1
- 在代码中监听链接:
import 'package:uni_links/uni_links.dart';
String? initialLink;
StreamSubscription? sub;
@override
void initState() {
super.initState();
initUniLinks();
}
Future<void> initUniLinks() async {
try {
initialLink = await getInitialLink();
if (initialLink != null) {
handleLink(initialLink!);
}
} catch (e) {
print('Error: $e');
}
sub = linkStream.listen((String? link) {
if (link != null) handleLink(link);
});
}
void handleLink(String link) {
// 解析链接并导航到对应页面
print('Handling link: $link');
}
@override
void dispose() {
sub?.cancel();
super.dispose();
}
4. 测试
通过命令行或生成二维码测试:
adb shell am start -W -a android.intent.action.VIEW -d "yourapp://example.com/path"
确保在真实设备上测试,模拟器可能有限制。

