Android 在Flatter add2app场景中,如何让应用程序返回按钮返回到主机应用程序?

Android 在Flatter add2app场景中,如何让应用程序返回按钮返回到主机应用程序?,android,flutter,Android,Flutter,我在add2app场景中使用颤振,主机应用程序启动颤振视图,颤振视图是颤振模块,如中所示 我有一个活动,里面有一个片段。 该片段已被删除 @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { FlutterView flutterView = Flutter.cr

我在add2app场景中使用颤振,主机应用程序启动颤振视图,颤振视图是颤振模块,如中所示

我有一个活动,里面有一个片段。 该片段已被删除

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

    FlutterView flutterView = Flutter.createView(getActivity(), getLifecycle(), route);
    GeneratedPluginRegistrant.registerWith(flutterView.getPluginRegistry());

return flutterView;
我想知道最好的清洗方法是什么,这样应用程序栏中的dart代码可以在左上角有一个后退按钮,实现主机片段及其活动中super.onBackPressed的效果-即左上角后退按钮的行为方式与硬件后退按钮相同,将您返回到主机应用程序中Backback中的上一个屏幕

我试过了

appBar: AppBar(
    leading: BackButton()
    title: const Text("My Screen Title),
    ),
但正如所料,因为它是initialRoute,所以canPop=false。 我还尝试了一个自定义BackButton(),除了而不是

return IconButton(
  icon: const BackButtonIcon(),
  color: color,
  tooltip: MaterialLocalizations.of(context).backButtonTooltip,
  onPressed: () {
    Navigator.maybePop(context);
  }
);
Navigator.maybePop(context);
就像后面的按钮,它使用的省道

Navigator.Pop(context);
而不是

return IconButton(
  icon: const BackButtonIcon(),
  color: color,
  tooltip: MaterialLocalizations.of(context).backButtonTooltip,
  onPressed: () {
    Navigator.maybePop(context);
  }
);
Navigator.maybePop(context);
毫不奇怪,它会导致一个空白的黑屏,而不是返回到Android平台java代码

我希望我可以并且可能会使用平台调用来执行fragment.getActivity().finish(),但我想知道是否还有更好的方法,因为这似乎是非常基本的


提前感谢

查看此问题的另一种方式是:我如何从我的Flitter应用程序发送消息以指示Android采取一些行动

在这种情况下,您需要点击flift中的后退按钮,以使Android
完成当前活动()
,或者指示包含片段的用户执行一些自定义导航操作

Dart和Android之间的消息传递是通过使用平台通道完成的。以下指南介绍了如何设置和使用平台频道:

因此,我将从颤振中的一些内容开始,如下所示:

MaterialApp(
appBar:appBar(
领先:IconButton(
图标:Icons.back,
已按下:(){
//发送您的平台通道消息,或调用其他一些方法。
}
),
标题:常量文本(“我的屏幕标题”),
),
);

我知道这篇文章很旧,但我只是在寻找同样的东西,发现可以通过Dart代码调用:

SystemNavigator.pop();

Flitter iOS中提到了这一点,但它也适用于Android。

我几天前就提出了这一基本想法,而且效果很好,如果我的问题不够清楚,我深表歉意。(或者如果我对工作不友好或过于挑剔)。我对这种方法有两个顾虑长期而言1)它必须为iOS构建2)与后退按钮相比,次要功能丢失。省道与图标样式和本地化有关3)它让新加入add2app的人有一种轻微的困惑/不满意的感觉..是否有a)可以对颤振进行低优先级增强DK,a b)plugin或c)add2app documentation你找到答案了吗。@Pawan我刚刚制作了一个自定义小部件,如Flatterys suggestion,使用了内置的所有功能,但通过平台调用或类似的方式添加和按下。有点烦人,但也不太糟糕。如果我记得的话,我使用了Flatter sdk中的源代码软化