make the folder drawer a widget by itself
This commit is contained in:
parent
d29650a7d0
commit
afcb58b152
64
lib/folder_drawer.dart
Normal file
64
lib/folder_drawer.dart
Normal file
@ -0,0 +1,64 @@
|
||||
//drawer with the folders for emails a.k.a mailboxes
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'api_service.dart';
|
||||
|
||||
class FolderDrawer extends StatefulWidget {
|
||||
ApiService apiService;
|
||||
Function(String) onFolderTap;
|
||||
|
||||
FolderDrawer({required this.apiService, required this.onFolderTap});
|
||||
|
||||
@override
|
||||
_FolderDrawerState createState() => _FolderDrawerState();
|
||||
}
|
||||
|
||||
class _FolderDrawerState extends State<FolderDrawer> {
|
||||
List<String> folders = [];
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
_fetchFolders();
|
||||
}
|
||||
|
||||
Future<void> _fetchFolders() async {
|
||||
try {
|
||||
List<String> fetchedFolders = await widget.apiService.fetchFolders();
|
||||
setState(() {
|
||||
folders = fetchedFolders;
|
||||
});
|
||||
} catch (e) {
|
||||
print('Error fetching folders: $e');
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Drawer(
|
||||
child: ListView(
|
||||
padding: EdgeInsets.zero,
|
||||
children: [
|
||||
...folders.map((folder) {
|
||||
return ListTile(
|
||||
leading: Icon(Icons.mail),
|
||||
title: Text(folder),
|
||||
onTap: () {
|
||||
widget.onFolderTap(folder);
|
||||
Navigator.pop(context); // Close the drawer after selecting a folder
|
||||
},
|
||||
);
|
||||
}).toList(),
|
||||
ListTile(
|
||||
leading: Icon(Icons.refresh),
|
||||
title: Text('Refresh Folders'),
|
||||
onTap: () {
|
||||
_fetchFolders(); // Refresh folders when this tile is tapped
|
||||
Navigator.pop(context); // Close the drawer after refresh
|
||||
},
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user