答案 0 :(得分:1)
我可以建议两种中等简单的方法,但我现在必须让你自己实施。
这取决于您想要展示多少本书,以及您是否确切知道每个书架要展示多少本书。
如果您决定每行需要一定数量的项目(比如5本书),我相信最简单的解决方案是使用ListView,ListView中的每个项目都是DecorativeBox(或容器)。此项目将具有图像背景,即货架,以及包含5本书的行。
对于大量的书籍来说,这应该是相当有效的,因为它应该一次只构造每一行。缺点是您需要确定每行的书籍数量,并且可能需要在横向或窄纵横比时绘制单独的代码(或者至少选择每行多少本书,并且仅在您需要横向时)。 (请注意,您可以获得屏幕宽度,并可以根据该数据确定每行的书数。)
另一种方法是使用Scrollable,Stack和Wrap。你将Stack放在Scrollable中,堆栈将有两层 - 背景和项目。背景必须知道如何根据其高度绘制 - 您可以使用BoxDecoration与DecorationImage并重复。 Wrap将包含所有图像。
有几件我不是100%肯定的事情,比如堆栈是否会处理调整大小的问题。但我认为这会奏效。专家将是它将处理屏幕旋转&不同的宽高比就好了,但可以说它不会很好地处理大量的书籍。
还有第三个选项,但它变得更加复杂(尽管客观上这是最好的方法) - 使用CustomScrollView和/或Slivers。我甚至不完全确定我会怎么做,但these是文档。