folders actions #5
					 2 changed files with 600 additions and 576 deletions
				
			
		| 
						 | 
				
			
			@ -1,4 +1,5 @@
 | 
			
		|||
import 'package:flutter/material.dart';
 | 
			
		||||
import 'package:flutter/widgets.dart';
 | 
			
		||||
import 'api_service.dart';
 | 
			
		||||
import 'structs.dart';
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -7,8 +8,10 @@ class EmailListScreen extends StatelessWidget {
 | 
			
		|||
  final Future<String> Function(List<String>, String) getEmailContent;
 | 
			
		||||
  final String folder;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  EmailListScreen({required this.emails, required this.getEmailContent, required this.folder});
 | 
			
		||||
  EmailListScreen(
 | 
			
		||||
      {required this.emails,
 | 
			
		||||
      required this.getEmailContent,
 | 
			
		||||
      required this.folder});
 | 
			
		||||
//fix the email list
 | 
			
		||||
  @override
 | 
			
		||||
  Widget build(BuildContext context) {
 | 
			
		||||
| 
						 | 
				
			
			@ -26,7 +29,8 @@ class EmailListScreen extends StatelessWidget {
 | 
			
		|||
            ),
 | 
			
		||||
            trailing: Text(email.date.toString()),
 | 
			
		||||
            onTap: () async {
 | 
			
		||||
              String emailContent = await getEmailContent(email.messages, folder);
 | 
			
		||||
              String emailContent =
 | 
			
		||||
                  await getEmailContent(email.messages, folder);
 | 
			
		||||
              Navigator.push(
 | 
			
		||||
                context,
 | 
			
		||||
                MaterialPageRoute(
 | 
			
		||||
| 
						 | 
				
			
			@ -64,6 +68,7 @@ class EmailPage extends StatefulWidget {
 | 
			
		|||
class EmailPageState extends State<EmailPage> {
 | 
			
		||||
  final ApiService apiService = ApiService();
 | 
			
		||||
  List<GetThreadResponse> emails = [];
 | 
			
		||||
  ValueNotifier<int> currentPageNotifier = ValueNotifier<int>(1);
 | 
			
		||||
  int page = 1;
 | 
			
		||||
  bool isBackDisabled = false;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -74,6 +79,9 @@ class EmailPageState extends State<EmailPage> {
 | 
			
		|||
    isBackDisabled = true;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  String getPage() => widget.page.toString();
 | 
			
		||||
  bool get backDisabled => isBackDisabled;
 | 
			
		||||
 | 
			
		||||
  void updateSelectedFolder(String folder) {
 | 
			
		||||
    setState(() {
 | 
			
		||||
      widget.selectedFolder = folder;
 | 
			
		||||
| 
						 | 
				
			
			@ -82,21 +90,22 @@ class EmailPageState extends State<EmailPage> {
 | 
			
		|||
    _fetchEmails();
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  String getPage() {
 | 
			
		||||
    return widget.page.toString();
 | 
			
		||||
  }
 | 
			
		||||
  // String getPage() =>  widget.page.toString();
 | 
			
		||||
  
 | 
			
		||||
 | 
			
		||||
  void updatePagenation(String option) {
 | 
			
		||||
    if (option == "next") {
 | 
			
		||||
      setState(() {
 | 
			
		||||
        widget.offset += 50;
 | 
			
		||||
        widget.page += 1;
 | 
			
		||||
        currentPageNotifier.value = widget.page;
 | 
			
		||||
        isBackDisabled = false;
 | 
			
		||||
      });
 | 
			
		||||
    } else if (option == "back") {
 | 
			
		||||
      setState(() {
 | 
			
		||||
        widget.offset -= 50;
 | 
			
		||||
        widget.page -= 1;
 | 
			
		||||
        currentPageNotifier.value = widget.page;
 | 
			
		||||
        if (widget.page == 1) {
 | 
			
		||||
          isBackDisabled = true;
 | 
			
		||||
          print("back dis");
 | 
			
		||||
| 
						 | 
				
			
			@ -104,6 +113,7 @@ class EmailPageState extends State<EmailPage> {
 | 
			
		|||
      });
 | 
			
		||||
    }
 | 
			
		||||
    // print(currentPage);
 | 
			
		||||
    print(widget.page);
 | 
			
		||||
    _fetchEmails();
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -129,7 +139,7 @@ class EmailPageState extends State<EmailPage> {
 | 
			
		|||
      body: EmailListScreen(
 | 
			
		||||
        emails: emails,
 | 
			
		||||
        getEmailContent: apiService.fetchEmailContent,
 | 
			
		||||
        folder: widget.selectedFolder,//try to grab from it directly
 | 
			
		||||
        folder: widget.selectedFolder, //try to grab from it directly
 | 
			
		||||
      ),
 | 
			
		||||
    );
 | 
			
		||||
  }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -347,7 +347,21 @@ class _HomeScreenState extends State<HomeScreen> with TickerProviderStateMixin {
 | 
			
		|||
                            },
 | 
			
		||||
                            child: Icon(Icons.navigate_before),
 | 
			
		||||
                          ),
 | 
			
		||||
                          Text(_emailPageKey.currentState?.getPage() ?? '1'),
 | 
			
		||||
                          Builder(
 | 
			
		||||
                            builder: (context) {
 | 
			
		||||
                              final emailState = _emailPageKey.currentState;
 | 
			
		||||
                              if (emailState == null) {
 | 
			
		||||
                                // Schedule a rebuild once the state is available
 | 
			
		||||
                                Future.microtask(() => setState(() {}));
 | 
			
		||||
                                return Text('Loading...');
 | 
			
		||||
                              }
 | 
			
		||||
 | 
			
		||||
                              return ValueListenableBuilder<int>(
 | 
			
		||||
                                valueListenable: emailState.currentPageNotifier,
 | 
			
		||||
                                builder: (context, value, _) => Text('$value'),
 | 
			
		||||
                              );
 | 
			
		||||
                            },
 | 
			
		||||
                          ),
 | 
			
		||||
                          ElevatedButton(
 | 
			
		||||
                            onPressed: () {
 | 
			
		||||
                              _emailPageKey.currentState
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue