当应用程序在后台时使用uni_links

时间:2019-01-04 10:32:51

标签: flutter flutter-dependencies

我的应用程序具有以下结构:

- 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中获得链接,但是如果该应用程序已经在LoginMain页面中打开,它将不再通过Splash Screen

然后,我尝试将其放在InheritedWidget中,但是可惜没有任何结果。

所以我的问题是:我应该在哪里以及如何设置uni_links,以便即使该应用程序处于打开状态也可以捕获所有传入的链接?

或者更好,我可以使用App链接/通用链接的替代方法吗?

2 个答案:

答案 0 :(得分:1)

尽管这不是最好,最优雅的方法,但我还是解决了这个问题。

首先,我没有正确使用getLinksStream

代替

(link) => (link) {...}

(link) {...}

然后,我需要将此订阅放入我的Splash Screen中并且不要对其进行处置,以便它可以侦听新事件。

如果有人有更好的解决方案,请随意添加

答案 1 :(得分:0)

在这种情况下,您需要同时使用getInitialUri()和getUriLinksStream(), 如果应用直接启动,您将从getInitialUri中获取uri,如果应用已在后台运行,您将从getUriLinksStream中获取uri。