我的应用程序具有以下结构:
- InheritedWidget for dependencies
--> Splash Screen Page
--> Login Pages
--> Main Pages
应用首次运行时,我可以使用var link = await getInitialLink();
来获取打开应用的链接的值。
但是,如果在后台打开应用程序,我将无法获得相同的结果。
我尝试使用
getLinksStream().listen((link) => (link) {
try {
var _latestUri;
if (link != null) _latestUri = Uri.parse(link);
print("=== Formated successfully a link!");
} on FormatException {
print("--- A link got here but was invalid");
}
});
要在Splash Screen
中获得链接,但是如果该应用程序已经在Login
或Main
页面中打开,它将不再通过Splash Screen
然后,我尝试将其放在InheritedWidget
中,但是可惜没有任何结果。
所以我的问题是:我应该在哪里以及如何设置uni_links
,以便即使该应用程序处于打开状态也可以捕获所有传入的链接?
或者更好,我可以使用App链接/通用链接的替代方法吗?
答案 0 :(得分:1)
尽管这不是最好,最优雅的方法,但我还是解决了这个问题。
首先,我没有正确使用getLinksStream
代替
(link) => (link) {...}
是
(link) {...}
然后,我需要将此订阅放入我的Splash Screen
中并且不要对其进行处置,以便它可以侦听新事件。
如果有人有更好的解决方案,请随意添加
答案 1 :(得分:0)
在这种情况下,您需要同时使用getInitialUri()和getUriLinksStream(), 如果应用直接启动,您将从getInitialUri中获取uri,如果应用已在后台运行,您将从getUriLinksStream中获取uri。