美文网首页
从dart:ui中的window获取屏幕大小的天坑

从dart:ui中的window获取屏幕大小的天坑

作者: noonez | 来源:发表于2019-09-27 14:05 被阅读0次

问题描述:

flutter项目中由于要适配UI,所以我用dart:ui中的window直接用获取屏幕大小

class GM{
  //屏幕属性--------------------------------------------------------------------------------------
  ///屏幕大小
  static Size get screenSize{
    return window.physicalSize / window.devicePixelRatio;
  }

比较坑的是在测试运行时,没有任何问题,能正常取到;但是当你打包release后再运行,就不能正常获取到了,ui会因为适配出现和打包时完全不一样的效果。

在api的文档上有这样一段说明:
At startup, the size of the application window may not be known before Dart code runs. If this value is observed early in the application lifecycle, it may report [Size.zero].
原来在APP启动时去调用,可能得到的屏幕大小是0.

解决方法:

不能在启动时直接获得,那么就在启动后的第一个页面的build初始化了.

class GM{
///屏幕大小
  static Size _screenSize;
  static Size get screenSize{
    return _screenSize;
  }
  static void initScreen(BuildContext context){
    var media = MediaQuery.of(context);
    _screenSize = media.size;
  }
}
class InitPage extends StatefulWidget{
  @override
  State<StatefulWidget> createState() {
    return _InitPageState();
  }
}
class _InitPageState extends State<InitPage>{
  @override
  Widget build(BuildContext context) {
    //在这里进行初始化
    GM.initScreen(context);
    return Scaffold(
      body: ...
    );
  }

相关文章

网友评论

      本文标题:从dart:ui中的window获取屏幕大小的天坑

      本文链接:https://www.haomeiwen.com/subject/iylfuctx.html