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');
  }
}