使用Go Router时遇URL启动首帧超时错误及App跳转失效问题
问题解决思路
1. 修复GoRouter路由配置错误
你的子路由path: '/jobs/*'写法有误,GoRouter中子路由的路径是相对父路由的,不能以斜杠开头,改成path: 'jobs/*'就能正确匹配/jobs/路径了。修正后的路由代码:
final router = GoRouter( routes: [ GoRoute( path: '/', builder: (_, __) => Scaffold( appBar: AppBar(title: const Text('Home Screen')), ), routes: [ GoRoute( path: 'jobs/*', // 去掉开头的斜杠 builder: (_, __) => Scaffold( appBar: AppBar(title: const Text('Jobs')), ), ), ], ), ], );
这个错误会导致/jobs/路径无法正确匹配路由,进而触发iOS端的首帧超时错误。
2. 检查Deeplink跳转配置
访问网页没触发App跳转提示,和Flutter代码无关,是平台端的Deeplink配置问题:
- iOS:需要在Xcode中配置Universal Links,关联你的域名,同时在域名服务器上传
apple-app-site-association文件。 - Android:需要配置App Links,在AndroidManifest中添加intent-filter,同时在域名服务器上传
assetlinks.json文件。
3. 验证路由匹配
修改路由后,你可以在Flutter中添加路由监听,确认路径是否被正确匹配:
final router = GoRouter( routes: [/* ... */], redirect: (context, state) { print('当前访问路径: ${state.location}'); return null; }, );
运行后查看控制台输出,确认路径是否被正确识别。
内容的提问来源于stack exchange,提问作者Nibbles
相关产品推荐
相关产品推荐

