7

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

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

传统上,对于 Flutter 端的 Android 样式窗口,我们使用返回按钮创建 AppBar。

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

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

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

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

4

2 回答 2

4

找到的解决方案:

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

移除最顶层的 Flutter 实例,展示它之前的内容。

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

此处的文档:api 参考

于 2020-01-29T09:22:41.100 回答
1
...
leading: BackButton(
          onPressed: () => {
            if (Navigator.canPop(context))
              {Navigator.pop(context)}
            else
              {SystemNavigator.pop()}
          },
        )
...
于 2021-04-26T14:58:53.093 回答