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