android - 如何让 Flutter 模块在原生 Android Activity 启动二级路由后返回原生 Android Activity?

标签 android flutter flutter-add-to-app

我正在向现有的 Android 项目添加 flutter ,一切正常,除了一件事:
我的 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 Activity ,然后按下后退按钮,它不会弹出 Flutter 引擎并导航到 Android Activity ,而是导航到初始 Flutter 路由(在本例中为 / 路由) .
    startActivity(
        FlutterActivity
            .withNewEngine()
            .initialRoute("/settings")
            .build(this)
    )
如果我们在启动 FlutterActivity 时指定初始路由,为什么会出现这种行为? ?
如果这是预期的行为,那么让它导航到 Android Activity 的最佳方法是什么?

最佳答案

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

关于android - 如何让 Flutter 模块在原生 Android Activity 启动二级路由后返回原生 Android Activity?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60353652/

相关文章:

java - Alog 转换为 Java

flutter - 如何在 flutter 中的 Column 中使用 StaggeredGridView?

在 PageView 中的 WheelEvent 上 Flutter Web "smooth scrolling"

flutter - 在对象列表中转换自定义对象的Future <List>

ios - 如何让 setInitialRoute 在不同的 View 上启动我的 Flutter iOS 应用程序?

java - 具有特定 Product Flavors 依赖性的 android-library

android - 火力分析 : Android app uninstall stats

android - 我无法使用“共享”对话框共享图像