MediaQuery vs IntrinsicHeight

问题描述 投票:0回答:2

在此问题中Whats the difference between double.infinity and MediaQuery?RémiRousselet建议使用IntrinsicHeight Widget而不是MediaQuery。我想了解IntrinsicHeight优于MediaQuery的优势,因为当我阅读文档时,我会发现此问题-

IntrinsicHeight:此类相对昂贵,因为它在最终布局阶段之前添加了一个推测性布局遍历。避免在可能的地方使用它。在最坏的情况下,此小部件可能会导致树的深度为O(N²)的布局。

所以上面说过,后者比较昂贵,应该尽可能避免,那为什么我们要使用IntrinsicHeight而不是简单的MediaQuery?

flutter dart flutter-layout
2个回答
0
投票

IntrinsicHeight =>将高度作为子窗口小部件的最大高度(示例行子窗口),它可能不是屏幕的总高度。需要为每个小部件计算。 REad详细信息https://medium.com/flutter-community/flutter-layout-cheat-sheet-5363348d037e

MediaQuery是根据屏幕尺寸而不是小部件计算的。 REad详细信息https://medium.com/flutter-community/a-guide-to-using-screensize-in-flutter-a-more-readable-approach-901e82556195


0
投票

[IntrinsicHeightMediaQuery具有两个完全不同的目的。

  • MediaQuery提供有关屏幕的信息。然后由您决定使用此信息来更改您的UI(尽管我建议使用double.infinityLayoutBuilder)。

  • IntrinsicHeight是布局实用程序。当您希望窗口小部件具有“理想的最小”大小而不是实际的最小大小时,使用它。

    IntrinsicHeight的常见用例是当您希望Row内的所有项目的“ height”是最大项目的大小时都具有相同的“ height”。

    如果项目大小,则使用IntrinsicHeight是实现这一目标的only解决方案。

    这通常看起来像:

IntrinsicHeight(
  child: Row(
    crossAxisAlignment: CrossAxisAlignment.stretch,
    children: [ Whatever(), AnotherItem() ], 
  ),
)
© www.soinside.com 2019 - 2024. All rights reserved.