FIX: Sort folders before files in file explorer
This commit is contained in:
@@ -267,6 +267,12 @@ class FileBrowserBloc extends Bloc<FileBrowserEvent, FileBrowserState> {
|
|||||||
) {
|
) {
|
||||||
final sorted = List<FileItem>.from(files);
|
final sorted = List<FileItem>.from(files);
|
||||||
sorted.sort((a, b) {
|
sorted.sort((a, b) {
|
||||||
|
// Always put folders first, then files
|
||||||
|
if (a.type != b.type) {
|
||||||
|
return a.type == FileType.folder ? -1 : 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Within the same type (both folders or both files), sort by the selected criterion
|
||||||
switch (sortBy) {
|
switch (sortBy) {
|
||||||
case 'name':
|
case 'name':
|
||||||
return isAscending
|
return isAscending
|
||||||
@@ -281,12 +287,7 @@ class FileBrowserBloc extends Bloc<FileBrowserEvent, FileBrowserState> {
|
|||||||
? a.size.compareTo(b.size)
|
? a.size.compareTo(b.size)
|
||||||
: b.size.compareTo(a.size);
|
: b.size.compareTo(a.size);
|
||||||
case 'type':
|
case 'type':
|
||||||
// Folders before files if ascending, else files before folders
|
// Already handled above (folders vs files)
|
||||||
int typeCompare = isAscending
|
|
||||||
? a.type.index.compareTo(b.type.index)
|
|
||||||
: b.type.index.compareTo(a.type.index);
|
|
||||||
if (typeCompare != 0) return typeCompare;
|
|
||||||
// Within same type, sort by name
|
|
||||||
return isAscending
|
return isAscending
|
||||||
? a.name.compareTo(b.name)
|
? a.name.compareTo(b.name)
|
||||||
: b.name.compareTo(a.name);
|
: b.name.compareTo(a.name);
|
||||||
|
|||||||
Reference in New Issue
Block a user