在 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(maptake 等)使用自己的索引构建每个项目(如在 ListView.builder 中)。

我想像这样: Table(children: List.generate(25, (i) => i).map((i) => MyTableCell(i)).toList().take(5, into(TableRow()))) 但当然不行……

我真的不想为此目的使用for 循环。有什么想法吗?

我希望我能很好地解释自己。如果需要,我会添加详细信息。谢谢。

【问题讨论】:

使用takeskip 怎么样? 我想不出适合我的方法。一个具体的例子将不胜感激。 【参考方案1】:

我同意使用GridView 是最简单的。如果您真的想使用Table,我想挑战是将您的List<int> 25 个项目划分为List<List<int>>,以便您可以将其用作childrenTable

我建议:

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 - 来自 REST API 的实时流数据

Flutter BLoC 模式 - 如何在流事件后导航到另一个屏幕?

如何使用firebase更改flutter项目中的API KEY?

Flutter 中的列表视图

如何通过 PHP api 在 Flutter 中流式传输 MySQL 数据库记录?