作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
为了制作响应式应用程序,我对每个组件大小都使用了 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'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/
我是一名优秀的程序员,十分优秀!