将 Flutter 集成到原生宿主应用程序时从 Flutter 完成 FlutterActivity [Add2App]

Finish FlutterActivity from Flutter when integrating Flutter to native host app [Add2App]

将 Flutter 集成到主机应用程序 (docs) 时,有几种方法可以做到,其中之一(最简单)是通过 [=12= 在新的 Activity 中打开 Flutter ] class。 像这样:

// Java
hostActivity.startActivity(                
  FlutterActivity.withCachedEngine("my_engine_id").build(context)
);

传统上,对于 Android 样式 windows,我们在 Flutter 端创建带有 Back 按钮的 AppBar。

这个 AppBar back 按钮和 Android 系统 back 按钮的行为必须相同:前景 activity 必须按后退按钮时已关闭(完成)。

目前系统后退按钮确实关闭了FlutterActivity, 但是如何从 flutters AppBar back 按钮中模拟这种行为呢?

// Dart - Flutter side
...
child: AppBar(
  leading: IconButton(
      icon: Icon(Icons.arrow_back),
      onPressed: () {
          // WHAT MUST BE HERE?
      }),
...

PS Flutter 端和主机之间的平台通道已建立——我可以从任何端调用任何代码

找到的解决方案:

SystemChannels.platform.invokeMethod<void>('SystemNavigator.pop');

Removes the topmost Flutter instance, presenting what was before it.

On Android, removes this activity from the stack and returns to the previous activity.

此处的文档:api reference

...
leading: BackButton(
          onPressed: () => {
            if (Navigator.canPop(context))
              {Navigator.pop(context)}
            else
              {SystemNavigator.pop()}
          },
        )
...