【问题标题】:GridView which automatically sets row height to the tallest grid itemGridView 自动将行高设置为最高的网格项
【发布时间】:2020-09-14 19:35:35
【问题描述】:

标题是我想要实现的简化版本:一个 GridView,它根据我提供的原型网格项自动设置行高。原型项目是可能的最高项目,例如,如果网格项目包含文本,则原型将包含可能的最长文本。

一种可能的解决方法是 ListView,其中每一行都包装在一个 IntrinsicHeight 小部件中。但是:

  • 行高不一定像在 GridView 中一样。
  • 根据文档,IntrinsicHeight 效率低下。不知道多少,也许对于简单的布局来说可以忽略不计。理想情况下,这种“计算固有高度”操作只会针对一个原型行调用。

【问题讨论】:

  • 也许这个post 会有所帮助。如果您发布一些具有要求的示例图像,那么我们可以尝试提出一些基本示例。仅仅通过阅读您的描述来想象您想要什么有点挑战性。
  • @fhucho 解决了吗?
  • @PhanSinh no...

标签: flutter


【解决方案1】:

据我了解,您希望动态设置 GridView 项目的大小。有两种方法,手动计算,每次根据你的内容设置,或者使用SliverGridDelegateWithMaxCrossAxisExtent。因此,在您的 GridView.builder 中,您可以添加以下属性:

gridDelegate: SliverGridDelegateWithMaxCrossAxisExtent(
                        maxCrossAxisExtent:
                            200.0, // maximum size of item (on small screens 1 item per row, on bigger as many as can fit with 200.0 px width)
                        childAspectRatio: 5 / 6,
                        crossAxisSpacing: 20,
                        mainAxisSpacing: 20,
                      ),

它使您可以访问额外的工具来管理保持纵横比的 GridView 项目,它还具有不应超过的最大尺寸

【讨论】:

  • 这需要一个我不知道的固定纵横比。纵横比取决于网格宽度、列数和最高项目的固有高度。这些在构建时都不知道。
  • @fhucho 好的)这是我目前所知道的)
【解决方案2】:

要根据输入到网格项目中的项目设置自定义行高,您可以考虑使用此 flutter_staggered_grid_view 插件。

它为普通网格和长条网格提供不同的小部件,并将处理输入的随机大小。因此,无论您提供给网格的小部件的大小如何,它都会占用项目的大小

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-23
    • 1970-01-01
    • 1970-01-01
    • 2012-04-01
    相关资源
    最近更新 更多