我正在向现有的 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/