flutter - 返回 Flutter 中的小部件列表
问题描述
Column(
children: <Widget>[
...myObject
.map((data) => Text("Text 1"), Text("Text 2")),
]
);
此代码块将失败,因为我返回 2 个小部件而不是一个。我怎样才能修复它并返回尽可能多的小部件而不在地图内创建另一列?
解决方案
首先,您不能使用箭头函数返回多个值,您需要将其更改为返回小部件列表的普通函数。其次,您需要使用 .toList() 方法,因为 .map 是惰性的,并且您需要迭代才能执行映射。
通过这两个步骤,您将以 a 结束List<List<Widget>>
,您应该在将其返回到需要 a 的列之前将其展平List<Widget>
。这可以通过带有标识函数的 Iterable.expand() 来实现。
你可以尝试这样的事情:
Column(
children: <Widget>[
..._generateChildrens(myObjects),
],
),
获取小部件的实际实现是:
List<Widget> _generateChildrens(List myObjects) {
var list = myObjects.map<List<Widget>>(
(data) {
var widgetList = <Widget>[];
widgetList.add(Text("Text 1"));
widgetList.add(Text("Text 2"));
return widgetList;
},
).toList();
var flat = list.expand((i) => i).toList();
return flat;
}
希望能帮助到你!
推荐阅读
- c++ - STM32 上的 MFRC522 RFID 模块故障排除
- java - 有没有办法将 Java DefaultStyledDocument 读取为 HTML?
- android - 如何为自定义 detekt gradle 任务启用类型解析?
- javascript - rxjs“查找”具有可观察到的对象哈希图
- google-apps-script - 将电子表格图形的图像发送到 Telegram 时,发送的图像始终是相同的过时图像
- windows - BitBlt 在 4k 显示器上不适合我
- mysql - 唯一字段上的group by的Sql问题
- javascript - 如何在模板文字中写入特殊字符?
- laravel - 使用 laravel Cashier 从条带中检索产品的价格
- python - 如何在科学记数法中放置特定数量的尾随零