2019-04-01 关于 flutter MediaQueryData.fromWindow 获取不到大小问题

关于第一次获取 MediaQueryData.fromWindow(window).size Size(0,0,0,0) 问题。

查看官方文档 下面说如果你使用了这个方法请确保是否实现了此方法WidgetsBindingObserver.didChangeMetrics

image.png

所以你如果第一次拿不到size的话就去看下文档监听下页面改变,下面贴出官方示例代码

class MetricsReactor extends StatefulWidget {
  const MetricsReactor({ Key key }) : super(key: key);

  @override
  _MetricsReactorState createState() => _MetricsReactorState();
}

class _MetricsReactorState extends State<MetricsReactor> with WidgetsBindingObserver {
  @override
  void initState() {
    super.initState();
    WidgetsBinding.instance.addObserver(this);
  }

  @override
  void dispose() {
    WidgetsBinding.instance.removeObserver(this);
    super.dispose();
  }

  Size _lastSize;

  @override
  void didChangeMetrics() {
    setState(() { _lastSize = WidgetsBinding.instance.window.physicalSize; });
  }

  @override
  Widget build(BuildContext context) {
    return Text('Current size: $_lastSize');
  }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 27,695评论 1 45
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,140评论 1 32
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,511评论 0 17
  • 2016.6.8 修改1 如果 再做一件事 生命就会停止 我会作几个句子 再将它们串联成首诗 如果 再做一个梦 现...
    Spiritual_ne阅读 186评论 0 0
  • 上学的时候,经常听人说,等我将来参加了工作就好了。 等到工作了,又常说,哎……等我退休就好了。 眨眼间,退休了,又...
    半樵阅读 1,750评论 26 60