我需要一个可靠的方法来得到屏幕的尺寸。我知道MediaQuery.of(context),但是当底部UI项可见时,它会删除底部填充。
tvokkenx1#
这似乎是不可能的从 dart 内目前在Android上由于Flutter忽略底部系统用户界面(即按钮)。我想这可能是一个bug,但如果你仔细看文档,它从来没有说window.physicalSize或MediaQueryData.size是屏幕的物理尺寸,而是flutter可以渲染的大小。这可能是有道理的,否则每个应用程序都必须确保考虑到这一点。所以你要做的是use method channels直接与android通信。我已经看过了,似乎没有任何插件可以做到这一点。所以如果你觉得有野心的话,你可以把它打包成一个。但是你想做的是调用native,然后直接在java代码中获得物理屏幕大小。如果你这样做,你可能最好实现它,iOS也是如此,尽管在那里不存在同样的问题(你甚至可以直接用if/else来做)。幸运的是,以前有人这样做过,所以你可以用它作为例子:https://github.com/magnatronus/flutter-displaymetrics。希望这对你有帮助,对不起,我没有一个更简单的答案!
window.physicalSize
MediaQueryData.size
bpsygsoo2#
最近我发布了一个插件,它可以帮助你得到屏幕的尺寸,和其他显示指标,如PPI和对角线,它也将帮助你转换英寸和厘米到Flutter逻辑像素.你可以在这里尝试https://pub.dev/packages/display_metrics
2条答案
按热度按时间tvokkenx1#
这似乎是不可能的从 dart 内目前在Android上由于Flutter忽略底部系统用户界面(即按钮)。
我想这可能是一个bug,但如果你仔细看文档,它从来没有说
window.physicalSize
或MediaQueryData.size
是屏幕的物理尺寸,而是flutter可以渲染的大小。这可能是有道理的,否则每个应用程序都必须确保考虑到这一点。所以你要做的是use method channels直接与android通信。我已经看过了,似乎没有任何插件可以做到这一点。所以如果你觉得有野心的话,你可以把它打包成一个。但是你想做的是调用native,然后直接在java代码中获得物理屏幕大小。如果你这样做,你可能最好实现它,iOS也是如此,尽管在那里不存在同样的问题(你甚至可以直接用if/else来做)。
幸运的是,以前有人这样做过,所以你可以用它作为例子:https://github.com/magnatronus/flutter-displaymetrics。
希望这对你有帮助,对不起,我没有一个更简单的答案!
bpsygsoo2#
最近我发布了一个插件,它可以帮助你得到屏幕的尺寸,和其他显示指标,如PPI和对角线,它也将帮助你转换英寸和厘米到Flutter逻辑像素.你可以在这里尝试https://pub.dev/packages/display_metrics