WIP: folders actions #5
@ -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();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -129,7 +139,7 @@ class EmailPageState extends State<EmailPage> {
|
|||||||
body: EmailListScreen(
|
body: EmailListScreen(
|
||||||
emails: emails,
|
emails: emails,
|
||||||
getEmailContent: apiService.fetchEmailContent,
|
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),
|
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…
Reference in New Issue
Block a user