将 Flutter 集成到本机主机应用程序时,从 Flutter 完成 FlutterActivity [Add2App]

nai*_*ail 6 android flutter flutter-appbar flutter-platform-channel

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

// Java
hostActivity.startActivity(                
  FlutterActivity.withCachedEngine("my_engine_id").build(context)
);
Run Code Online (Sandbox Code Playgroud)

传统上,对于 Flutter 端的 Android 样式窗口,我们创建带有后退按钮的AppBar 。

此 AppBar后退按钮和 Android 系统后退按钮的行为必须相同:按下后退按钮时必须关闭(完成)前台活动。

当前系统后退按钮确实关闭了FlutterActivity,但是如何从 Flutters AppBar后退按钮模拟这种行为?

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

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

nai*_*ail 5

找到解决方案:

SystemChannels.platform.invokeMethod<void>('SystemNavigator.pop');
Run Code Online (Sandbox Code Playgroud)

删除最顶层的 Flutter 实例,显示之前的内容。

在 Android 上,从堆栈中删除此 Activity 并返回到上一个 Activity。

此处的文档:api 参考