【问题标题】:Whats the difference between double.infinity and MediaQuery?double.infinity 和 MediaQuery 有什么区别?
【发布时间】:2019-02-02 02:46:34
【问题描述】:

为了占据整个宽度或高度,我使用double.infinity,但是通过一些颤振样本,我注意到很多人使用MediaQuery.of(context).size.widthheight。我浏览了文档,但没有提到这两者之间的差异,也没有提到何时使用哪一个,因为两者都允许相同的功能。它们是特定于特定小部件的吗?

【问题讨论】:

  • @pskink 任何具有宽度和高度属性的小部件
  • @pskink 但我也可以将 MediaQuery 与容器一起使用
  • @pskink 是的,我明白了,但是两者之间有什么区别,何时使用什么以及是否有任何与它们相关的性能警告
  • @pskink 请再次阅读问题标题

标签: dart flutter


【解决方案1】:

区别可以总结为:

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

通常,您会想使用double.infinity,但并不总是可行。

一些小部件允许他们的孩子随心所欲地长大(ColumnListViewOverflowBox...)。在那种情况下使用double.infinity 会产生一个悖论:

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

在这些情况下使用MediaQuery 是不好的。除非您正在创建类似于Scaffold 的小部件,否则您很少会想要这样做。

这就是IntrinsincHeight 等小部件派上用场的地方。这些小部件能够解决悖论,因此具有有效的布局。

【讨论】:

  • 您可以在 OverflowBox 小部件的子级中使用 double.infinity
  • 我在这里逐字阅读完全相同的答案:flutteragency.com/…
  • 多亏了这个,你拯救了我的一天
猜你喜欢
  • 2020-08-25
  • 2010-10-02
  • 2011-12-12
  • 2010-09-16
  • 2012-03-14
  • 2012-02-06
  • 2011-02-25
  • 2011-11-22
  • 2015-03-26
相关资源
最近更新 更多