我是否需要为每个小部件获取
MediaQuery.of(context).size.width
,或者有没有办法获取它一次,也许在main.dart
中,存储它并使其在每个文件和每个类中可用?最好不必通过其中任何一个。归根结底,它不是一个永远不会改变的值,因此希望只能得到一次。
我来自 React Native,在 styles.js 文件中运行一次
var {width, height} = require('Dimensions').get('window');
非常容易。
MediaQuery 实际上是一个继承的小部件,因此您实际上是在全局范围内访问它。
Google I/O 2024 上宣布,随着 Flutter 3.22 的推出,建议使用:
MediaQuery.sizeOf(context).width;
MediaQuery.sizeOf(context).height;
代替:
MediaQuery.of(context).size.width;
MediaQuery.of(context).size.height;
sizeOf(context)
每当属性大小发生更改时都会重建,而 of(context.size)
每当 MediaQuery 发生更改时都会重建小部件,从而使渲染视图的速度变慢。