在 Flutter 中,如何使用流 API 将项目列表转换为 Table 小部件?
Posted
技术标签:
【中文标题】在 Flutter 中,如何使用流 API 将项目列表转换为 Table 小部件?【英文标题】:In Flutter, how to transform a list of items into a Table widget using the stream API? 【发布时间】:2019-04-08 07:42:40 【问题描述】:在颤振应用程序中,我有一个包含 25 个项目的 List
(例如 int
数字),我希望将其显示在 5 行和 5 列的表格中。我想使用流 API(map
、take
等)使用自己的索引构建每个项目(如在 ListView.builder
中)。
我想像这样:
Table(children: List.generate(25, (i) => i).map((i) => MyTableCell(i)).toList().take(5, into(TableRow())))
但当然不行……
我真的不想为此目的使用for
循环。有什么想法吗?
我希望我能很好地解释自己。如果需要,我会添加详细信息。谢谢。
【问题讨论】:
使用take
和skip
怎么样?
我想不出适合我的方法。一个具体的例子将不胜感激。
【参考方案1】:
我同意使用GridView
是最简单的。如果您真的想使用Table
,我想挑战是将您的List<int>
25 个项目划分为List<List<int>>
,以便您可以将其用作children
的Table
?
我建议:
yourList.fold([[]], (list, x)
return list.last.length == 5 ? (list..add([x])) : (list..last.add(x));
);
(无耻地从 this post 复制的解决方案 - 因为它是一个很棒的解决方案 :-))。
但是,有些人可能会说 for
循环做同样的事情会更常见,因此对许多人来说更容易阅读...... ;-)
【讨论】:
【参考方案2】:GridView 采用跨轴计数和项目流。不需要数学。
【讨论】:
当然 GridView 会很棒,但后来我看到youtu.be/_lbE0wsVZSw 指出当你想要一个不可滚动的小部件时,Table 优于 GridView。以上是关于在 Flutter 中,如何使用流 API 将项目列表转换为 Table 小部件?的主要内容,如果未能解决你的问题,请参考以下文章
如何将通过 Timer.periodic 从 API 检索到的数据集成到 Flutter Cubit 项目中
Flutter BLoC 模式 - 如何在流事件后导航到另一个屏幕?