fixed problem of pagenation not updating
This commit is contained in:
parent
e104f445ab
commit
b5cb5b99fb
@ -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…
Reference in New Issue
Block a user