import 'dart:developer'; import 'package:flutter/material.dart'; import 'package:marianum_mobile/api/marianumcloud/webdav/queries/listFiles/cacheableFile.dart'; import 'package:marianum_mobile/widget/errorView.dart'; import '../../../api/marianumcloud/webdav/queries/listFiles/listFilesCache.dart'; import '../../../api/marianumcloud/webdav/queries/listFiles/listFilesResponse.dart'; import '../../../data/files/filesProps.dart'; import 'fileElement.dart'; class Files extends StatefulWidget { List path; Files(this.path, {Key? key}) : super(key: key); @override State createState() => _FilesState(); } class _FilesState extends State { FilesProps props = FilesProps(); ListFilesResponse? data; @override void initState() { super.initState(); log("Init files: ${widget.path.toString()}"); ListFilesCache( path: widget.path.isEmpty ? "/" : widget.path.join("/"), onUpdate: (ListFilesResponse d) => { setState(() { data = d; }), } ); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text(widget.path.length > 0 ? widget.path.last : "Dateien"), actions: [ IconButton( icon: const Icon(Icons.search), onPressed: () => {}, ), IconButton( icon: const Icon(Icons.sort), onPressed: () => {}, ) ], ), body: data == null ? const Center(child: CircularProgressIndicator()) : data!.files.isEmpty ? const ErrorView(icon: Icons.folder_off_rounded, text: "Der Ordner ist leer") : ListView.builder( itemCount: data!.files.toList().length, itemBuilder: (context, index) { CacheableFile file = data!.files.toList().skip(index).first; return FileElement(file, widget.path); }, ), // Consumer( // builder: (context, value, child) { // // if(value.listFilesResponse.files.isEmpty) { // return const ErrorView(text: "Der Ordner ist leer", icon: Icons.folder_off_outlined); // } // // List files = value.listFilesResponse.files.toList(); // files.sort((a, b) => a.isDirectory ? -1 : 1); // // return ListView.builder( // itemCount: files.length, // itemBuilder: (context, index) { // CacheableFile file = files.skip(index).first; // return FileElement(file, props); // }, // ); // } // ), ); } }