import 'package:flutter/material.dart'; import 'api_service.dart'; import 'structs.dart'; import 'folder_drawer.dart'; class EmailListScreen extends StatelessWidget { final List emails; final Future Function(List) getEmailContent; EmailListScreen({required this.emails, required this.getEmailContent}); @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('Emails'), ), body: ListView.separated( itemCount: emails.length, itemBuilder: (context, index) { final email = emails[index]; return ListTile( title: Text(email.from_name, style: TextStyle(fontWeight: FontWeight.bold)), subtitle: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [Text(email.subject)], ), trailing: Text(email.date.toString()), onTap: () async { String emailContent = await getEmailContent(email.messages); Navigator.push( context, MaterialPageRoute( builder: (context) => EmailView( emailContent: emailContent, from: email.from_address, name: email.from_name, to: email.to.toString(), subject: email.subject, date: email.date.toString(), id: email.id.toString(), ), ), ); }, ); }, separatorBuilder: (context, index) => Divider(), ), ); } } class EmailPage extends StatefulWidget { @override _EmailPageState createState() => _EmailPageState(); } class _EmailPageState extends State { final ApiService apiService = ApiService(); List emails = []; // Function to handle folder selection void _onFolderSelected(String folder) async { List fetchedEmails = await apiService.fetchEmailsFromFolder(folder, 0); setState(() { emails = fetchedEmails; }); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: Text('Email Page')), drawer: FolderDrawer( apiService: apiService, onFolderTap: _onFolderSelected, ), body: EmailListScreen( emails: emails, getEmailContent: apiService.fetchEmailContent, ), ); } }