//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 { List folders = []; @override void initState() { super.initState(); _fetchFolders(); } Future _fetchFolders() async { try { List 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 }, ), ], ), ); } }