我从Firebase控制台创建了一个firebase动态链接。我尝试将其实现为代码,当我通过使用Navigation方法单击 example.page.link/ABCD 来冷启动我的应用程序时,会导致无限循环。如果应用程序在后台运行,则没有任何问题。
问题: 当应用从冷启动开始导航到新页面时,无限循环会触发。
有什么办法解决这个问题吗?
已编辑
示例链接:www.example.com/testing?title=testing_deep_link
Future firebaseDynamicLinkInit() async {
final PendingDynamicLinkData data =
await FirebaseDynamicLinks.instance.getInitialLink();
_handleDeepLink(data);
FirebaseDynamicLinks.instance.onLink(
onSuccess: (PendingDynamicLinkData dynamicLinkData) async {
_handleDeepLink(dynamicLinkData);
}, onError: (OnLinkErrorException e) async {
print('${e.message}');
});
}
void _handleDeepLink(PendingDynamicLinkData data) {
final Uri deepLink = data?.link;
if (deepLink != null) {
var title = deepLink.queryParameters['title'];
if (title != null) {
// START This part trigger the problem
Navigator.of(context).popUntil((route) => route.isFirst);
Navigator.of(context).pushReplacementNamed('/Pages', arguments: 6);
// END This part trigger the problem
}
}
return null;
}
答案 0 :(得分:1)
关闭线程
为我的粗心表示歉意。
我发现了我犯的错误。我不应该使用导航推送,因为此路由“ / Pages”将重新创建页面并一次又一次地运行 firebaseDynamicLinkInit()(无限循环)。
路由'/ Pages' initState()包含 firebaseDynamicLinkInit()会导致无限循环。
// START This part trigger the problem
Navigator.of(context).popUntil((route) => route.isFirst);
Navigator.of(context).pushReplacementNamed('/Pages', arguments: 6);
// END This part trigger the problem