import 'package:flutter/material.dart'; import '../api.dart'; import '../main.dart'; class FilesScreen extends StatefulWidget { const FilesScreen({super.key, required this.kcId}); final String kcId; @override State createState() => _FilesScreenState(); } class _FilesScreenState extends State { Future>? _future; @override void didChangeDependencies() { super.didChangeDependencies(); _future ??= AppScope.of(context).api.files(widget.kcId); } static const _visibilityLabels = { 'ALLE': 'Alle', 'ALLE_AUSSER_KONFIS': 'Team (ohne Konfis)', 'NUR_LT': 'Nur Leitungsteam', }; @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: const Text('Dateien')), body: FutureBuilder>( future: _future, builder: (context, snap) { if (snap.connectionState != ConnectionState.done) { return const Center(child: CircularProgressIndicator()); } if (snap.hasError) { return Center( child: Padding( padding: const EdgeInsets.all(24), child: Text('${snap.error}', textAlign: TextAlign.center), ), ); } final files = snap.data!; if (files.isEmpty) { return const Center(child: Text('Keine Dateien freigegeben.')); } return ListView.separated( itemCount: files.length, separatorBuilder: (context, index) => const Divider(height: 1), itemBuilder: (context, i) { final f = files[i]; return ListTile( leading: const Icon(Icons.insert_drive_file_outlined), title: Text(f.filename), subtitle: Text(_visibilityLabels[f.visibility] ?? f.visibility), trailing: const Icon(Icons.download), onTap: () { ScaffoldMessenger.of(context).showSnackBar( SnackBar( content: Text( 'Download-URL: ${AppScope.of(context).api.fileDownloadUrl(f.id)}', ), ), ); }, ); }, ); }, ), ); } }