我需要一种可靠的方法来获取屏幕的尺寸。
我知道MediaQuery.of(context),但是当底部UI项目可见时,它会删除底部填充。
我需要一种可靠的方法来获取屏幕的尺寸。
我知道MediaQuery.of(context),但是当底部UI项目可见时,它会删除底部填充。
在Android上,由于flutter忽略底部系统UI(即按钮),目前从dart中实现似乎是不可能的。
我以为这可能是一个bug,但如果你仔细看文档,它从来没有说明window.physicalSize
或MediaQueryData.size
是屏幕的物理尺寸,而是flutter可以渲染的尺寸。这可能是有道理的,否则每个应用程序都必须确保考虑到这一点。
所以你需要使用方法通道直接与Android通信。我已经看过了,似乎没有任何插件能够做到这一点,所以如果你感到有野心,可以将其包装成一个插件。但你需要做的是调用本地方法,然后直接在Java代码中获取物理屏幕大小。如果你这样做,最好也为iOS实现它,尽管这个问题在那里不存在(你甚至可以在flutter中直接使用if/else解决)。
幸运的是,有人已经做过这个,所以你可以将其作为示例使用:https://github.com/magnatronus/flutter-displaymetrics。假设displayMetrics给出了正确的大小。
import 'dart:ui' as ui;
和ui.window.physicalSize
。虽然我认为这就是 mediaquery 底层使用的东西。 - rmtmckenzie