gpt4 book ai didi

dart - 我可以将 MediaQuery.of(context) 固定为常数值吗?

转载 作者:行者123 更新时间:2023-12-03 04:02:27 28 4
gpt4 key购买 nike

为了制作响应式应用程序,我对每个组件大小都使用了 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 不是常量。相反,它会在用户旋转屏幕时动态更新自身,例如,从纵向模式到水平模式,在这种情况下,它的 widthheight 会翻转。

一般来说,剥离任何 .of(context) 并假设它们是常量并不是一个好主意。根据 Flutter's in-code dartdoc,调用此方法的时间复杂度为 O(1) :

Calling this method is O(1) with a small constant factor, but will lead to the widget being rebuilt more often.

关于dart - 我可以将 MediaQuery.of(context) 固定为常数值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54431721/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com