double.infinity和MediaQuery有什么区别?

时间:2019-02-02 02:46:35

标签: dart flutter

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

1 个答案:

答案 0 :(得分:2)

区别可以总结为:

  • 我想和父母一样大(double.infinity)
  • 我希望与屏幕(MediaQuery)一样大。

通常,您需要使用double.infinity,但这并不总是可能的。

某些小部件允许其子级达到所需大小(ColumnListViewOverflowBox ...)。在这种情况下,使用double.infinity会产生一个悖论:

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

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

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