我目前有一個顯示大量物件集合的ListView。很多物件都有相同的前一個/兩個單詞,例如:
- Peter Johnson
- Peter Jackson
- 彼得-史密斯
我想根據名字的開頭把這個ListView分成幾個組。因此,例如,所有的Peters將被放在同一個組中。然后多個人共享的下一個名字也將被分割到他們自己的組中。
問題是,我不能明確地說出這些名字是什么,我將如何把這些名字分割開來?
uj5u.com熱心網友回復:
這是個難題,我將盡可能地簡化這個問題,但一般的答案是首先寫一個演算法,按照你的要求分割你的字串(在這種情況下,如果第一個詞是相同的),然后將這些嵌套到一個列或其他地方。
在這里,我將這些值分割成一個以名字為鍵的地圖,并將所有具有該名字的人的串列作為一個值
。//Theres probably a better way to do this。
Map<String, List< String>> valuesByFirstName(List<String> values) {
Map<String, List<String> > result = {};
for (final val in values) {
final fn = val.split().first;
if (result[fn] != null) result[fn]!.add(val)。
else result[fn] = [val];
}
return result。
}
然后我不確定你想如何對這些東西進行分組,所以我只是做了一些基本的例子:
我不知道你想如何對這些東西進行分組。
var values = valuesByFirstName(originalValues) 。
return Row(
兒童。[
for (var key in values.key)
SizedBox(
高度。200,
width: 100,
孩子。ListView(
兒童。[
Text(key, style: TextStyle(fontSize: 20)。
for (var value in values[key])
Text(value),
]
),
),
),
],
);
如果你想要的是收縮不同的部分,請看一下ExpansionPanel部件
。轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/315679.html
標籤:
