如何让Flutter模块在原生Android activity启动第二个路由后返回原生Android activity?

4

我正在往一个现有的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活动,然后按下返回按钮,它将不会弹出Flutter引擎并导航到Android活动,而是导航到初始的Flutter路由(在这种情况下为/路由)。

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

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

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


嗨,Pedro,你找到解决方案了吗? - Umut ADALI
嗨,ADALI,还没有。 - Pedro Massango
2个回答

3

以下是从文档中提取的内容:

如果路由名称以斜杠开头,则将其视为“深链接”,在推送此路由之前,将推送导致该路由的路径。 即使路由只是 /a,应用也会从 / 和 /a 开始加载。 https://api.flutter.dev/flutter/material/MaterialApp/initialRoute.html

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


1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接