![](/img/trans.png)
[英]How to convert List<Asset> Array to List<File> Array in Dart | Flutter?
[英]How to convert an array of data to a list of widgets with expand or fold in flutter/dart?
真的很沮喪自己沒有解決它,但最終放棄了。 我有一個字段數組,每個字段都是帶有標題和值的 map。 我想遍歷它並創建一個文本小部件列表以及它們之間的一些填充。 我嘗試了以下方法:
fields.expand((field)=>
[ Text(field['title']),
Padding(padding: const EdgeInsets.only(bottom: 4.0))
]
).toList()
但這會產生以下錯誤:
type 'List<dynamic>' is not a subtype of type 'List<Widget>'
我嘗試在expand
后添加<Widget>
但后來我得到:
type 'MappedListIterable<Map<String, String>, dynamic>' is not a subtype of type 'List<Widget>'
我也嘗試在expand(
之后添加<Widget>
,但后來我得到:
type '<Widget>(dynamic) => List<Widget>' is not a subtype of type '(Map<String, String>) => Iterable<dynamic>' of 'f'
不知道還能做什么。 我怎么能強迫它意識到這是一個小部件列表? 我也嘗試過使用 fold,但遇到了類似的打字問題。
我認為您正在尋找的是.map()
,但有一種更清潔的方法:
items: [
for(var field in fields)
...[
Text(field['title']),
Padding(padding: const EdgeInsets.only(bottom: 4.0)),
]
]
確保您的最低 SDK 版本是 pubspec.yaml 中的 2.6.0 或更高版本
正如我在評論中所說,您的一個解決方案似乎應該有效,但由於它沒有我提供替代解決方案。
您可以使用for-each
循環“手動”創建一個 output List
,您可以將其傳遞給您的Column
小部件。 前任。
List<Widget> columnList = List();
for(Map field in fields) {
columnList.add(Text(field['title']);
columnList.add(Padding(padding: const EdgeInsets.only(bottom: 4.0)));
}
正如@christopher-moore 所指出的,在expand
之后添加<Widget>
確實有效。 我認為它不起作用的原因是我不斷收到錯誤,但在另一個地方我仍然有相同的聲明但沒有添加。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.