在上一步中,我们创建了一个 ImageRow
来显示一排图片,作为构建应用程序图片网格的一部分。
回顾一下,我们的图片网格结构如下:
ImageItem
中。ImageItem
横向排列在一个 ImageRow
中。ImageRow
纵向排列在一个 ImageGrid
中。在这一步中,我们将把多个 ImageRow
组合到一个 ImageGrid
中,以显示一个图片网格。ImageGrid
的代码与我们为 ImageRow
编写的代码非常相似,因此我们不会详细讲解。
注意:如果你不想手动输入代码,可以在这里找到本步骤的全部代码:https://github.com/makepad/image_viewer/tree/main/step_5
在这一步中,你将学习:
ImageGrid
让我们开始添加 ImageGrid
的定义。ImageGrid
负责垂直排列多个 ImageRow
。
在 app.rs
中,添加以下代码到 live design
块中,位于 ImageRow
定义之后:
与 ImageRow
一样,在 ImageGrid
中,我们使用 PortalList
来列出其行。唯一的区别是我们使用了 flow: Down
,这确保其子项从上到下排列。
App
现在我们已经有了一个 ImageGrid
,让我们更新 App
的定义,使其显示 ImageGrid
而不是 ImageRow
。
在 app.rs 中,将 live design 块中的 App 定义替换为下面这个新的定义:
将下面的代码添加到 app.rs:
这段代码定义了 ImageGrid
结构体,并为其实现了 Widget
trait。这段代码和我们之前为 ImageRow
结构体编写的代码非常相似,所以我们不会详细讲解。唯一的区别是,我们不是绘制 4 个 ImageItem
,而是绘制了 3 个 ImageRow
。
让我们检查一下目前的进展。
确保你在你的包目录下,然后运行:
如果一切正常,屏幕上应该会出现一个包含占位图像网格的窗口:
在这一步中,我们创建了一个 ImageGrid
来显示图像网格。
我们现在已经有了一个图像网格的初始实现。虽然它仍然非常有限 —— 总是显示相同数量的行和每行相同数量的图像,而且只显示占位图像,但这已经是一个不错的开始!
在接下来的几步中,我们将去除这些限制,让图像网格变得更加动态。