How to implement this complex view in the flutter?

我正在try 实现一个包含n列的GridView,子对象应该具有一定的纵横比(比如1.3),但子对象的高度应该是(用Android术语包装内容).

我被卡住了,因为据我所知,GridView的childAspectRatio:1.3(默认值:1)总是以相同的纵横比布局子项,而不是动态内容.

Note: children 应根据图像的高度增加其高度

Use case:我正在try 实现一个类似下面的视图,其中图像被包装height = wrap content,以便万一具有拉伸高度的图像看起来很好,并且形成类似StaggeredGridView的 struct .

Sample Image

推荐答案

Edit:我在0.2.0中添加了构造函数StaggeredTile.fit.有了这一点,您应该能够构建您的应用程序;-).

Dynamic tile sizes

First comment: 现在使用StaggeredGridView,布局和子渲染是完全独立的.因此,正如@rmtmckenzie所说,您必须获得图像大小才能创建您的瓷砖. 然后,您可以使用StaggeredTile.count构造函数,其中mainAxisCellCount参数具有双精度值:new StaggeredTile.count(x, x*h/w)(其中h是图像的高度,w是图像的宽度.这样,瓷砖与您的图像具有相同的纵横比.

您想要完成的工作将需要更多的工作,因为您希望在图像下面有一个包含一些信息的区域.为此,我认为您必须先计算您的瓷砖的实际宽度,然后再创建它,并使用StaggeredTile.extent构造函数.

我知道这并不理想,我目前正在研究一种新的方式来创建布局.我希望这将有助于构建像您这样的场景.

Flutter相关问答推荐

Build.gradle专线:2个Flutter Flutter

如何在2024年使用Ffltter将用户数据保存在云FireStore中?

如何正确处理Flutter 翼中使用火基时发生的碰撞?

如何创建这样的按钮

一个API中有两个不同JSON响应的Flutter 改装问题

如何从RealmResults获取Flutter Flutter 流?

Firebase WHERE过滤器在日期字段中不起作用

如何画三角形的圆角?

创建仅定义导出的文件是否有意义?

Flutter 未处理的异常 - 对 null 值使用 Null 判断运算符

Flutter:在 pubspec.yaml 中找不到assets资源

在 flutter 中获取最喜欢的文档

如何在两个不同的路由(屏幕)之间正确设置 BlocProvider?

如何在 flutter 的 onChanged(更改字符)处更改 TextField 边框 colored颜色 ?

Show Snackbar above to showModalBottomSheet Flutter

Flutter Websockets MacOS:相同的代码在调试模式下有效,但在发布模式下无效:(操作系统错误:提供了 node 名或服务名..)

在 flutter 中使用 Firebase 实时数据库数据创建无限滚动效果

Flutter 中的无效日期格式 2022 年 11 月 14 日

setState 不会在第一次更新 - Flutter

解密 Modulr 安全令牌