4

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

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

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

在 Android Activity 中,如果我用这个启动一个新的 Flutter 活动:

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

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

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

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

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

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

4

2 回答 2

3

以下是文档的摘录:

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

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

于 2021-04-14T07:32:15.503 回答
1

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

更多细节在https://api.flutter.dev/flutter/services/SystemNavigator/pop.html

于 2021-06-16T13:21:07.253 回答