一尘不染

double.infinity和MediaQuery有什么区别?

flutter

为了使用整个宽度或高度,我使用double.infinity,但是通过一些颤动样本,我注意到许多人使用MediaQuery.of(context).size.widthheight。我浏览了文档,但是在这两者之间以及何时使用哪一个都具有相同功能方面没有提到任何区别。它们特定于特定的小部件吗?


阅读 385

收藏
2020-08-13

共1个答案

一尘不染

区别可以总结为:

  • 我想和父母允许的一样大(double.infinity)
  • 我想和屏幕(MediaQuery)一样大。

通常,您会想使用double.infinity,但并非总是可能的。

一些小工具让自己的孩子一样大,因为他们想成为(ColumnListViewOverflowBox…)。在这种情况下,使用double.infinity会产生一个悖论:

  • 父母允许任何大小
  • 孩子想要父母允许的最大尺寸

MediaQuery在这些情况下使用是不好的。除非您要创建类似于的窗口小部件,否则您几乎不需要这样做Scaffold

这就是诸如此类的小部件IntrinsincHeight派上用场的地方。这些小部件能够解决这一矛盾,因此具有有效的布局。

2020-08-13