fixed problem of pagenation not updating

This commit is contained in:
Juan Marulanda De Los Rios 2025-05-02 19:35:51 -04:00
parent e104f445ab
commit b5cb5b99fb
2 changed files with 600 additions and 576 deletions

View File

@ -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
),
);
}

View File

@ -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