Flutter中获取设备的宽度和高度

问题描述 投票:0回答:2

我需要一种可靠的方法来获取屏幕尺寸。

我知道 MediaQuery.of(context),但是当底部 UI 项目可见时,它会删除底部填充。

dart flutter flutter-layout
2个回答
8
投票

目前在 Android 上,这在 dart 中似乎是不可能的,因为 flutter 忽略了底部系统 UI(即按钮)。

我认为这可能是一个错误,但如果你仔细查看文档,它从未声明

window.physicalSize
MediaQueryData.size
是屏幕的物理尺寸,而是颤动可以渲染的尺寸。这可能是有道理的,否则每个应用程序都必须确保考虑到这一点。

所以你要做的是使用方法通道直接与android通信。我已经看了一下,似乎没有任何插件可以做到这一点,所以如果你觉得雄心勃勃,你可以将它包装成一个插件。但您需要做的是调用native,然后直接在java 代码中获取物理屏幕尺寸。如果你这样做,你可能最好也为 iOS 实现它,尽管同样的问题在那里不存在(你甚至可以直接在 flutter 中使用 if/else 来实现)。

幸运的是,之前有人这样做过,所以你可以使用它作为示例:https://github.com/magnatronus/flutter-displaymetrics。假设 displayMetrics 为您提供了正确的尺寸。

希望对您有所帮助,抱歉我没有更简单的答案给您!


0
投票

最近我发布了一个插件,它可以帮助你获取屏幕的尺寸,以及其他显示指标,例如 PPI 和对角线,还可以帮助你将英寸和厘米转换为 Flutter 逻辑像素。 您可以在这里尝试一下https://pub.dev/packages/display_metrics

© www.soinside.com 2019 - 2024. All rights reserved.