Открыть боковую панель
Aurora OS
Flutter
Flutter Community Plugins
file_manager
Коммиты
2274aecb
Коммит
2274aecb
создал
Июн 28, 2021
по автору
4-alok
Просмотр файлов
SortBy.name enhances
владелец
0cc706e0
Изменения
4
Скрыть пробелы
Построчно
Рядом
example/lib/main.dart
Просмотр файла @
2274aecb
...
...
@@ -39,6 +39,7 @@ class HomePage extends StatelessWidget {
leading:
IconButton
(
icon:
Icon
(
Icons
.
arrow_back
),
onPressed:
()
async
{
final
bool
k
=
await
controller
.
goToParentDirectory
();
print
(
k
);
},
...
...
lib/controller/file_manager_controller.dart
Просмотр файла @
2274aecb
...
...
@@ -5,6 +5,7 @@ import 'package:flutter/material.dart';
class
FileManagerController
extends
ChangeNotifier
{
String
_path
=
""
;
int
_currentStorage
=
0
;
SortBy
short
=
SortBy
.
name
;
/// Get current directory path.
Directory
get
getCurrentDirectory
=
>
Directory
(
_path
);
...
...
@@ -31,13 +32,9 @@ class FileManagerController extends ChangeNotifier {
return
await
goToParentDirectory
();
}
// List<FileSystemEntity> sort(SortBy sort, List<FileSystemEntity> entitys) {
// if (sort == SortBy.name) {
// entitys
// .sort((a, b) => a.path.toLowerCase().compareTo(b.path.toLowerCase()));
// return entitys;
// } else if (sort == SortBy.date) {}
// }
Future
<
void
>
sortBy
(
SortBy
sortType
)
async
{
if
(
sortType
==
SortBy
.
name
)
{}
}
/// Open directory by providing Directory.
void
openDirectory
(
FileSystemEntity
entity
)
{
...
...
lib/enums/sort_by.dart
Просмотр файла @
2274aecb
enum
SortBy
{
name
,
date
,
}
enum
SortBy
{
name
,
type
,
date
}
lib/file_manager.dart
Просмотр файла @
2274aecb
...
...
@@ -13,16 +13,42 @@ typedef TileBuilder = Widget Function(
FileSystemEntity
entity
,
);
class
_PathInfo
{
final
String
path
;
final
FileStat
fileStat
;
_PathInfo
(
this
.
path
,
this
.
fileStat
);
}
List
<
_PathInfo
>
_pathInfo
=
[];
bool
isFile
(
FileSystemEntity
entity
)
{
return
(
entity
is
File
);
}
dirRename
(
FileSystemEntity
dir
,
String
name
)
{}
bool
isDirectory
(
FileSystemEntity
entity
)
{
return
(
entity
is
Directory
);
}
Future
<
List
<
FileSystemEntity
>>
_sortEntitysList
(
String
path
,
SortBy
sortType
)
async
{
_pathInfo
.
clear
();
final
List
<
FileSystemEntity
>
list
=
await
Directory
(
path
)
.
list
()
.
toList
();
if
(
sortType
==
SortBy
.
name
)
{
final
dirs
=
list
.
where
((
element
)
=
>
element
is
Directory
)
.
toList
();
dirs
.
sort
((
a
,
b
)
=
>
a
.
path
.
toLowerCase
()
.
compareTo
(
b
.
path
.
toLowerCase
()));
final
files
=
list
.
where
((
element
)
=
>
element
is
File
)
.
toList
();
files
.
sort
((
a
,
b
)
=
>
a
.
path
.
toLowerCase
()
.
compareTo
(
b
.
path
.
toLowerCase
()));
return
[..
.
dirs
,
..
.
files
];
}
else
if
(
sortType
==
SortBy
.
date
)
{
// list.forEach((element) async =>
// _pathInfo.add(_PathInfo(element.path, await element.stat())));
// final dirs = list.where((element) => element is Directory).toList();
// dirs.sort((a, b) => a.path.toLowerCase().compareTo(b.path.toLowerCase()));
// final files = list.where((element) => element is File).toList();
}
return
[];
}
/// Get the basename of Directory or File.
/// ie: controller.dirName(dir);
String
basename
(
dynamic
entity
,
[
bool
showFileExtension
=
true
])
{
...
...
@@ -68,6 +94,7 @@ class FileManager extends StatefulWidget {
final
ScrollPhysics
?
physics
;
final
bool
shrinkWrap
;
final
FileManagerController
controller
;
final
SortBy
sort
;
final
TileBuilder
tileBuilder
;
/// Hide the hidden file and folder.
...
...
@@ -77,6 +104,7 @@ class FileManager extends StatefulWidget {
this
.
loadingScreen
,
this
.
physics
,
this
.
shrinkWrap
=
false
,
this
.
sort
=
SortBy
.
name
,
required
this
.
controller
,
required
this
.
tileBuilder
,
this
.
hideHiddenEntity
=
true
,
...
...
@@ -121,12 +149,11 @@ class _FileManagerState extends State<FileManager> {
valueListenable:
path
,
builder:
(
context
,
pathSnapshot
,
_
)
{
return
FutureBuilder
<
List
<
FileSystemEntity
>>(
future:
Directory
(
pathSnapshot
)
.
list
(
recursive:
false
)
.
toList
(),
// future: Directory(pathSnapshot).list(recursive: false).toList(),
future:
_sortEntitysList
(
pathSnapshot
,
widget
.
sort
),
builder:
(
context
,
snapshot
)
{
if
(
snapshot
.
hasData
)
{
List
<
FileSystemEntity
>
entitys
=
snapshot
.
data
!
;
entitys
.
sort
((
a
,
b
)
=
>
a
.
path
.
toLowerCase
()
.
compareTo
(
b
.
path
.
toLowerCase
()));
if
(
widget
.
hideHiddenEntity
)
{
entitys
=
entitys
.
where
((
element
)
{
...
...
Редактирование
Предварительный просмотр
Поддерживает Markdown
0%
Попробовать снова
или
прикрепить новый файл
.
Отмена
You are about to add
0
people
to the discussion. Proceed with caution.
Сначала завершите редактирование этого сообщения!
Отмена
Пожалуйста,
зарегистрируйтесь
или
войдите
чтобы прокомментировать