mirror of
https://github.com/johrpan/musicus_mobile.git
synced 2025-10-26 18:57:25 +01:00
Add directory mode to files selector
This commit is contained in:
parent
24a4911665
commit
ad7499051b
1 changed files with 32 additions and 7 deletions
|
|
@ -4,7 +4,18 @@ import 'package:flutter/material.dart';
|
|||
import 'package:flutter/services.dart';
|
||||
import 'package:path/path.dart' as path;
|
||||
|
||||
enum FilesSelectorMode {
|
||||
files,
|
||||
directory,
|
||||
}
|
||||
|
||||
class FilesSelector extends StatefulWidget {
|
||||
final FilesSelectorMode mode;
|
||||
|
||||
FilesSelector({
|
||||
this.mode = FilesSelectorMode.files,
|
||||
});
|
||||
|
||||
@override
|
||||
_FilesSelectorState createState() => _FilesSelectorState();
|
||||
}
|
||||
|
|
@ -71,7 +82,8 @@ class _FilesSelectorState extends State<FilesSelector> {
|
|||
},
|
||||
);
|
||||
} else if (fse is File) {
|
||||
result = CheckboxListTile(
|
||||
if (widget.mode == FilesSelectorMode.files) {
|
||||
result = CheckboxListTile(
|
||||
value: selectedPaths.contains(fse.path),
|
||||
secondary: Icon(Icons.insert_drive_file),
|
||||
title: Text(path.basename(fse.path)),
|
||||
|
|
@ -85,6 +97,12 @@ class _FilesSelectorState extends State<FilesSelector> {
|
|||
});
|
||||
},
|
||||
);
|
||||
} else {
|
||||
result = ListTile(
|
||||
leading: const Icon(Icons.insert_drive_file),
|
||||
title: Text(path.basename(fse.path)),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
|
|
@ -101,9 +119,14 @@ class _FilesSelectorState extends State<FilesSelector> {
|
|||
title: Text('Choose files'),
|
||||
actions: <Widget>[
|
||||
FlatButton(
|
||||
child: Text('DONE'),
|
||||
child: Text(
|
||||
widget.mode == FilesSelectorMode.files ? 'DONE' : 'SELECT'),
|
||||
onPressed: () {
|
||||
Navigator.pop(context, selectedPaths);
|
||||
Navigator.pop(
|
||||
context,
|
||||
widget.mode == FilesSelectorMode.files
|
||||
? selectedPaths
|
||||
: directories.last?.path);
|
||||
},
|
||||
),
|
||||
],
|
||||
|
|
@ -113,10 +136,12 @@ class _FilesSelectorState extends State<FilesSelector> {
|
|||
Material(
|
||||
elevation: 2.0,
|
||||
child: ListTile(
|
||||
leading: directories.isNotEmpty ? IconButton(
|
||||
icon: const Icon(Icons.arrow_upward),
|
||||
onPressed: up,
|
||||
) : null,
|
||||
leading: directories.isNotEmpty
|
||||
? IconButton(
|
||||
icon: const Icon(Icons.arrow_upward),
|
||||
onPressed: up,
|
||||
)
|
||||
: null,
|
||||
title: Text(directories.isEmpty
|
||||
? 'Storage devices'
|
||||
: directories.last.path),
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue