繁体   English   中英

在没有BuildContext的情况下如何获取Flutter中的屏幕尺寸?

[英]How can I get the screen size in Flutter without BuildContext?

首先,虽然在问题中类似, 但这不是我需要的,因为答案对我的情况没有帮助。

我让我的 AppConfig 根据设备决定字体大小,以便非常大的设备(例如平板电脑)获得更大的文本(一点点)。 我的配置在任何视图之前被调用,因此在运行时我没有 BuildContext。 那我该怎么做呢?

class AppConfig {
  static AppConfig _instance;

  static AppConfig instance() {
    if (_instance == null) {
      _instance = AppConfig();
    }
    return _instance;
  }

// config stuff for colours and themes

double width = MediaQuery.of(context).size.width;

if (width > 500) { //arbitrary number I haven't decided yet
    initWithBigFonts();
} else {
    initWithSmallFonts();
}

为了将来参考完整的解决方案:

通过添加

Size size = WidgetsBinding.instance.window.physicalSize;
double width = size.width;
double height = size.height;

您可以在任何地方且无需 BuildContext,从设备屏幕获取 Size。

在这种情况下,您应该考虑 devicePixelRatio;

Size size = WidgetsBinding.instance.window.physicalSize;
double ratio = WidgetsBinding.instance.window.devicePixelRatio;
double width = size.width / ratio;

大小 size = MediaQueryData.fromWindow(WidgetsBinding.instance.window).size;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM