如何检测当前激活的导航栏类型?

3

如何通过代码确定哪个导航栏是活动状态?

1 2


此问题被关闭的重复链接并没有回答此问题。它不允许区分上面显示的两个导航栏。


我的使用情况是:我想使用我创建的自定义键盘。从系统键盘中获取启示,我应该根据导航栏来处理它。

4 6

如果导航栏是手势(即一条线),我会添加向下箭头按钮。 如果是按钮导航栏,则应修改活动导航栏以旋转箭头,但我还没有想出如何做或是否可能,这是另一个问题


我已经为您编辑了问题,以澄清为什么应该重新打开此问题,并投票以重新打开它。链接的重复问题并不是您所问的问题,这就是为什么您的问题应该重新打开的原因。在我看来,重复问题只是针对Android特定情况,这并不能解决您的问题,因为您可以编写一个简单的Flutter插件来与本地Android代码进行交互。 - Christopher Moore
并非回答,但是:您介意更明确地解释一下为什么要确定显示哪个导航栏吗?在我的经验中,这是一种非常不典型的问题,因为通常应用程序不需要知道这些细节。您想通过此达到什么目的,可能有更好的方法。 - M. Prokhorov
1个回答

1

您可以根据Android底部导航样式计算设备高度。

为了进行计算,需要使用device_info_plus库。

https://pub.dev/packages/device_info_plus

使用这个库,你可以检查真实设备高度。
即 AndroidDeviceInfo 的 displayMetrics.heightPx 属性。
然后你可以计算 Android 导航栏高度(androidNavHeight)。
final devicePixelRatio = MediaQuery.of(context).devicePixelRatio;
final screenHeight = MediaQuery.of(context).size.height;

final DeviceInfoPlugin deviceInfoPlugin = DeviceInfoPlugin();
final AndroidDeviceInfo androidInfo = await deviceInfoPlugin.androidInfo;
final deviceHeight = androidInfo.displayMetrics.heightPx;

final androidNavHeight = deviceHeight / devicePixelRatio - screenHeight;

如果导航样式为按钮,则androidNavHeight将为48。
否则,如果导航样式为滑动手势,结果将约为14.857...。

似乎是一个解决方法。然而,目前我还没有找到更好的答案,所以+1。 - Francesco - FL

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