【问题标题】:How to make Flutter module return to native Android activity after the native Android activity launches a secondary route?原生 Android Activity 启动二级路由后,如何让 Flutter 模块返回原生 Android Activity?
【发布时间】:2020-06-06 18:27:13
【问题描述】:

我正在向现有的 Android 项目添加颤振,一切正常,除了一件事:

我的 Android 项目只有一个 Flutter 模块。在那个 Flutter 模块中,我有两条路线将显示在 Android 项目的不同部分:

  initialRoute: '/',
  routes: {
    '/': (_) => MyHomePage(),
    '/settings': (_) => _SettingsPage()
  }

如果我在 Android Activity 中启动一个新的 Flutter Activity:

startActivity(
            FlutterActivity
                .withCachedEngine(flutterEngineId)
                .build(this)
        )

它将使用默认的页面路由 (/) 启动 Flutter,这是预期的结果。然后在这个 Flutter 页面中,如果我导航回来,它将弹出 Flutter 引擎并导航回 Android Activity。现在一切都很好。

但是,如果我使用自定义初始路由启动 Flutter 活动,然后按下后退按钮,它不会弹出 Flutter 引擎并导航到 Android 活动,而是导航到初始 Flutter 路由(在本例中为 @987654324 @路线)。

    startActivity(
        FlutterActivity
            .withNewEngine()
            .initialRoute("/settings")
            .build(this)
    )

如果我们在启动FlutterActivity 时指定初始路由,为什么会出现这种行为?

如果这是预期行为,那么让它导航到 Android 活动的最佳方式是什么?

【问题讨论】:

  • 嗨佩德罗,你找到解决办法了吗?
  • 嗨 ADALI,还没有。

标签: android flutter flutter-add-to-app


【解决方案1】:

以下是文档摘录:

如果路由名称以斜线开头,则将其视为“深层链接”,并且在推送此路由之前,还会推送指向该路由的路由。 即使路由只是 /a,应用程序也会以加载 / 和 /a 开始。 https://api.flutter.dev/flutter/material/MaterialApp/initialRoute.html

您可以尝试将您的“/settings”路由重命名为“settings”。

【讨论】:

    【解决方案2】:

    尝试 SystemNavigator.pop() 弹出最顶层的颤振路线

    更多详情https://api.flutter.dev/flutter/services/SystemNavigator/pop.html

    【讨论】:

      猜你喜欢
      • 2019-08-12
      • 2012-10-09
      • 2020-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-27
      相关资源
      最近更新 更多