gpt4 book ai didi

list - 如何在Dart中以空对象结尾对List 进行排序

转载 作者:行者123 更新时间:2023-12-03 04:25:16 25 4
gpt4 key购买 nike

开始手握Flutter进行一项研究项目,我想知道如何对文件列表进行排序。

确实,我的程序中有一个4个文件的初始化列表,如下所示:

List<File> imageFiles = List(4);

初始化实际上意味着我的列表如下: [null,null,null,null]

当用户执行操作时,此列表可以填满。但是,用户可以随时删除文件,这会导致以下情况: [file A, null, null, file d]

我的问题是,如何在删除到达时对列表进行排序,以使列表中的空对象始终位于最后( [file A, file D, null, null])。

我已经看过很多主题,但是它们从不关心DART。

预先感谢您的帮助。

最佳答案

您可以使用list.sort((a, b) => a == null ? 1 : 0);对列表进行排序

这是一个完整的示例,使用String而不是File,您可以在DartPad上运行

void main() {
List<String> list = List(4);
list[0] = "file1";
list[3] = "file4";

print("list before sort: $list");
// list before sort: [file1, null, null, file4]

list.sort((a, b) => a == null ? 1 : 0);

print("list after sort: $list");
// list after sort: [file1, file4, null, null]

}

如果这是一个 业务需求,最多具有4个文件,则建议创建一个可以处理的 值对象
例如:
class ImageList {
final _images = List<String>();

void add(String image) {
if(_images.length < 4) {
_images.add(image);
}
}

void removeAt(int index) {
_images.removeAt(index);
}

String get(int index) {
return _images[index];
}

List getAll() {
return _images;
}
}

您可以这样运行它:
void main() {
ImageList imageList = ImageList();
imageList.add("file1");
imageList.add("file2");
imageList.add("file3");
imageList.add("file4");
imageList.add("file5"); // won't be add

print("imagelist: ${imageList.getAll()}");
// imagelist: [file1, file2, file3, file4]

imageList.removeAt(2); // remove file3
print("imagelist: ${imageList.getAll()}");
// imagelist: [file1, file2, file4]
}

这将使控制变得更加容易。 (此示例再次使用 String而不是 File)

关于list - 如何在Dart中以空对象结尾对List <File>进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60113676/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com