如何解决从列表中创建子列表并将所有子列表添加到 Flutter 中的一个列表中
有人可以帮助我了解列表概念吗? 我有一个名字列表,我想用相同的字母制作单词的子列表,然后将所有这些子列表添加到列表中。 这是我的代码:
List<String> items = [
'one','two','three','four','five','six','seven','eight','nine','ten'
];
List<String> sublist;
@override
void initState() {
super.initState();
//----- sort alphabetically
items.sort((a,b) =>
a.toString().toLowerCase().compareTo(b.toString().toLowerCase()));
//----- get the initials
sublist = items.map((element) => element[0]).toList();
//----- remove duplicates
sublist = sublist.toSet().toList();
// ---------------- generate lists
List s = [];
List<List> listOfLists = [];
sublist.forEach((letter) async {
items.forEach((item) =>
item.startsWith(letter) ? s.add(item) : {items.iterator.moveNext()});
listOfLists.add(s);
print(letter);
print(s);
s.clear();
});
print(listOfLists);
这是我想从 listOfList 得到的: [ [八],[五,四],[九],[一],[七,六],[十,三,二] ] 但我只是得到空的子列表: 这是我的结果:enter image description here
解决方法
您正在清除每次迭代中的列表。
移除 s.clear() 并将 List s = [] 移到 for each 函数内
// ---------------- generate lists
List<List> listOfLists = [];
sublist.forEach((letter) async {
List s = [];
items.forEach((item) => item.startsWith(letter) ? s.add(item) : {items.iterator.moveNext()});
listOfLists.add(s);
print(letter);
print(s);
});
无论如何,我建议您不要在另一个 forEach 中使用 forEach
然后您可以使用:
List<List> listOfLists = [];
sublist.forEach((letter) async {
List s = items.where((item) => item.startsWith(letter)).toList();
listOfLists.add(s);
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。