added upload with multiple files #61
Loading…
x
Reference in New Issue
Block a user
No description provided.
Delete Branch "develop-uploadMultipleFiles"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
#37
@ -91,3 +93,3 @@
path: widget.path.isEmpty ? '/' : widget.path.join('/'),
onUpdate: (ListFilesResponse d) {
if(!context.mounted) return; // prevent setState when widget is possibly already disposed
log('_query');
raus
@ -92,2 +94,3 @@
onUpdate: (ListFilesResponse d) {
if(!context.mounted) return; // prevent setState when widget is possibly already disposed
log('_query');
if(!context.mounted) return; // prevent setState when widget is possibly already disposed
kommentar raus
@ -102,0 +108,4 @@
pushScreen(
context,
withNavBar: false,
screen: FilesUploadDialog(filePaths: paths, remotePath: widget.path.join('/'), onUploadFinished: (uploadedFilePaths) => _query),
funktioniert das _query callback ohne die klammern()?
wofüg irst das leere return hier?
@ -0,0 +11,4 @@
class FilesUploadDialog extends StatefulWidget {
final List<String> filePaths;
final String remotePath;
final void Function(List<String> uploadedFilePaths) onUploadFinished;
wofür ist hier der Parameter
List<String> uploadedFilePaths
?@ -0,0 +32,4 @@
class _FilesUploadDialogState extends State<FilesUploadDialog> {
final List<UploadableFile> _uploadableFiles = [];
variable nicht leer initialisieren und durch addAll popularisieren
du kannst die variable hier late setzen und im initState setzen
@ -0,0 +34,4 @@
class _FilesUploadDialogState extends State<FilesUploadDialog> {
final List<UploadableFile> _uploadableFiles = [];
bool _isUploading = false;
double _progressValue = 0.0;
passenderer Variablenname
_overallProgressValue
damit klar ist das sie den Gesamtfortschritt wiederspiegelt
@ -0,0 +47,4 @@
}));
}
void showErrorMessage(int errorCode){
was ist das für ein error code? Ein http status code?
Falls ja variable enstprechend umbenennen und in der message auch angeben
@ -0,0 +66,4 @@
);
}
void uploadSelectedFiles({bool override = false}) async {
dein ehemaliger name
upload
ist in diesem kontext doch besser, vielleicht auchuploadFiles
@ -0,0 +73,4 @@
});
for (var element in _uploadableFiles) {
setState(() {
setState für jede datei auszuführen ist unnötig und ressourcenintensiv.
Mit setState auf zeile 70 verbinden und inline schreiben mit
_uploadableFiles.foreach(f => f.isConflicting = false)
@ -0,0 +84,4 @@
List<WebDavResponse> result = (await webdavClient.propfind(PathUri.parse(widget.remotePath))).responses;
List<UploadableFile> conflictingFiles = [];
for (var file in _uploadableFiles) {
umschreiben in fluente schreibweise
@ -0,0 +122,4 @@
onPressed: () {
Navigator.pop(context, true);
},
child: const Text('Ersetzen', textAlign: TextAlign.center),
Überschreiben
diese Aktion sollte nochmal ein "Bist du sicher" dialog öffnen. Du kannst hierzu den bestehenden ConfirmDialog verwenden
@ -0,0 +116,4 @@
onPressed: () {
Navigator.pop(context, false);
},
child: const Text('Bearbeiten', textAlign: TextAlign.center),
Umbenennen
Passt Bearbeiten nicht besser? Es gibt ja dann auch noch die Möglichkeit neben dem Umbenennen auch die Datei zu löschen oder komplett abzubrechen.
@ -204,7 +216,6 @@ class _FilesState extends State<Files> {
leading: const Icon(Icons.upload_file),
title: const Text('Aus Dateien hochladen'),
onTap: () {
context.loaderOverlay.show();
gibts in irgendeiner form dann enien loadingindicator?
die Galerie/ Dateiwahl kann bei einigen handys doch etwas länger dauern.
schwierig: wo soll der wieder versteckt werden? Irgendwie bekomme ich das nicht so gut hin.
@ -215,9 +226,8 @@ class _FilesState extends State<Files> {
leading: const Icon(Icons.add_a_photo_outlined),
title: const Text('Aus Gallerie hochladen'),
onTap: () {
context.loaderOverlay.show();
hier ebenfalls
@ -0,0 +48,4 @@
}).toList();
/*_uploadableFiles.addAll(widget.filePaths.map((filePath) {
String fileName = filePath.split(Platform.pathSeparator).last;
ungenutzer code raus
@ -0,0 +87,4 @@
List<WebDavResponse> result = (await webdavClient.propfind(PathUri.parse(widget.remotePath))).responses;
List<UploadableFile> conflictingFiles = _uploadableFiles.where((file) {
String fileName = file.fileName;
if (result.any((element) => Uri.decodeComponent(element.href!).endsWith('/$fileName'))) {
einfaches return
return result.any((element) => Uri.decodeComponent(element.href!).endsWith('/$fileName'))
ggf auch ohne return als pfeilsyntax
@ -0,0 +147,4 @@
if(!replaceFiles) {
for (var element in conflictingFiles) {
element.isConflicting = true;
state variablen in setState ändern
im talk kann bei der bilderwahl nur ein bild gewählt werden. Nur beiden dateien ist das selektieren mehrerer dateien möglich.
gleiches bei der galeriewahl in den Dateien.
@ -0,0 +170,4 @@
);
if(uploadTask.statusCode < 200 || uploadTask.statusCode > 299) {
// error code
kommentar raus
@ -0,0 +264,4 @@
height: 24,
padding: EdgeInsets.zero,
child: IconButton(
tooltip: 'Namen löschen',
das ist sehr verwirrend....
bitte nur die tonne rechts, die das element löscht.
Der "Name" sollte nicht per button löschbar sein.