state bug fixed :))))

This commit is contained in:
Juan Marulanda De Los Rios 2024-08-08 23:49:32 -04:00
parent 45c605f464
commit ae5fc1304a

View File

@ -181,27 +181,27 @@ class _EmailPageState extends State<EmailPage> {
return content; return content;
} }
Future<String> _getThreadMessagesJson(String threadId) async { // Future<String> _getThreadMessagesJson(String threadId) async {
String jsonResponse = ""; // String jsonResponse = "";
try { // try {
var url = // var url =
Uri.http('127.0.0.1:3001', 'get_thread_messages', {'id': threadId}); // Uri.http('127.0.0.1:3001', 'get_thread_messages', {'id': threadId});
// print(url); // // print(url);
var response = await http.get(url); // var response = await http.get(url);
// print(response.statusCode); // // print(response.statusCode);
// print(response.body); // // print(response.body);
if (response.statusCode == 200) { // if (response.statusCode == 200) {
jsonResponse = response.body; // Here you get the JSON response // jsonResponse = response.body; // Here you get the JSON response
} else { // } else {
throw Exception('Failed to load thread messages'); // throw Exception('Failed to load thread messages');
} // }
} catch (e) { // } catch (e) {
print('_getThreadMessagesJson caught error: $e'); // print('_getThreadMessagesJson caught error: $e');
} // }
return jsonResponse; // Returns the JSON string // return jsonResponse; // Returns the JSON string
} // }
Future<List<Widget>> _getDrawerItems() async { Future<List<Widget>> _getDrawerItems() async {
List<String> drawerItems = []; List<String> drawerItems = [];
@ -265,7 +265,8 @@ class _EmailPageState extends State<EmailPage> {
body: EmailListScreen( body: EmailListScreen(
emails: emails, emails: emails,
getEmailContent: _getEmailContent, getEmailContent: _getEmailContent,
getJsonEmail: _getThreadMessagesJson), // getJsonEmail: _getThreadMessagesJson
),
); );
} }
} }
@ -273,12 +274,13 @@ class _EmailPageState extends State<EmailPage> {
class EmailListScreen extends StatelessWidget { class EmailListScreen extends StatelessWidget {
final List emails; final List emails;
final Future<String> Function(String) getEmailContent; final Future<String> Function(String) getEmailContent;
final Future<String> Function(String) getJsonEmail; // final Future<String> Function(String) getJsonEmail;
EmailListScreen( EmailListScreen({
{required this.emails, required this.emails,
required this.getEmailContent, required this.getEmailContent,
required this.getJsonEmail}); // required this.getJsonEmail
});
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -302,27 +304,31 @@ class EmailListScreen extends StatelessWidget {
trailing: Text(emails[index].date.toString()), trailing: Text(emails[index].date.toString()),
onTap: () async { onTap: () async {
String emailContent = await getEmailContent(emails[index].id); String emailContent = await getEmailContent(emails[index].id);
String jsonContent = // String jsonContent =
await getJsonEmail(emails[index].uid.toString()); // await getJsonEmail(emails[index].uid.toString());
// print(emails[index]); // print(emails[index]);
String from = emails[index].from; String from = emails[index].from.toString();
String name = emails[index].name; String name = emails[index].name.toString();
String to = emails[index].to; String to = emails[index].to.toString();
String cc = emails[index].cc; String cc = emails[index].cc.toString();
String hash = emails[index].hash; String hash = emails[index].hash.toString();
String subject = emails[index].subject; String subject = emails[index].subject.toString();
String date = emails[index].date; String date = emails[index].date.toString();
String uid = emails[index].uid; String uid = emails[index].uid.toString();
String list = emails[index].list; String list = emails[index].list.toString();
String id = emails[index].id; String id = emails[index].id.toString();
String in_reply_to = emails[index].in_reply_to; String in_reply_to = emails[index].in_reply_to.toString();
// String jsonbuilt = // String jsonbuilt =
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute( MaterialPageRoute(
builder: (context) => EmailView( builder: (context) => EmailView(
emailContent: emailContent, emailContent: emailContent,
jsonEmail: jsonContent, // jsonEmail: jsonContent,
from: from, name: name, to: to, cc: cc, hash: hash,
subject: subject, date: date,
uid: uid, list: list, id: id,
in_reply_to: in_reply_to,
)), )),
); );
}); });
@ -337,23 +343,49 @@ class EmailListScreen extends StatelessWidget {
class EmailView extends StatefulWidget { class EmailView extends StatefulWidget {
final String emailContent; final String emailContent;
final String jsonEmail; // final String jsonEmail;
final String from;
final String name;
final String to;
final String cc;
final String hash;
final String subject;
final String date;
final String uid;
final String list;
final String id;
final String in_reply_to;
const EmailView( const EmailView(
{Key? key, required this.emailContent, required this.jsonEmail}) {Key? key,
required this.emailContent,
// required this.jsonEmail,
required this.from,
required this.name,
required this.to,
required this.cc,
required this.hash,
required this.subject,
required this.date,
required this.uid,
required this.list,
required this.id,
required this.in_reply_to})
: super(key: key); : super(key: key);
@override @override
_EmailViewState createState() => _EmailViewState(); _EmailViewState createState() => _EmailViewState();
} }
class _EmailViewState extends State<EmailView> { class _EmailViewState extends State<EmailView> {
late Key iframeKey;
@override @override
void initState() { void initState() {
super.initState(); super.initState();
iframeKey = Key("iframe-${widget.id}");
ui.platformViewRegistry.registerViewFactory( ui.platformViewRegistry.registerViewFactory(
'html-view33', // 'html-view33'
iframeKey.toString(),
(int viewId) => html.IFrameElement() (int viewId) => html.IFrameElement()
..width = '100%' ..width = '100%'
..height = '100%' ..height = '100%'
@ -368,10 +400,10 @@ class _EmailViewState extends State<EmailView> {
appBar: AppBar( appBar: AppBar(
title: Text(widget.name), title: Text(widget.name),
), ),
body: Container( body: HtmlElementView(
child: HtmlElementView( key: iframeKey,
viewType: 'html-view33', viewType: iframeKey.toString(),
), // 'html-view33',
), ),
); );
} }