为了制作响应式应用程序,我为每个组件大小使用MediaQuery.of(context)
,但为每个部分编写都很难。
因此,我将其固定为常数,处理是否正确?
class ScreenUtil {
static double width;
static double height;
}
void initializeConstants(BuildContext context){
ScreenUtil.width = MediaQuery.of(context).size.width;
ScreenUtil.height = MediaQuery.of(context).size.height;
CurrentPlatform.platform = Theme.of(context).platform;
}
不,这是一个坏主意。
我们需要.of(context)
的原因是始终获取最新对象,以便我们可以确保小部件在继承的值更改时正确更新自身。
MediaQuery.of(context).size
不是一个常量。相反,当用户旋转屏幕时,例如,从纵向模式旋转到水平模式,它将动态更新自身,在这种情况下,它的width
和height
将被翻转。
一般来说,剥离任何.of(context)
并假设它们是常量不是一个好主意。根据 Flutter 的代码内 dartdoc,调用此方法的时间复杂度为 O(1):
调用此方法是 O(1),常数因子很小,但会 导致更频繁地重建小部件。