Ver Fonte

state bug fixed :))))

juan há 1 mês atrás
pai
commit
ae5fc1304a
1 ficheiros alterados com 85 adições e 53 exclusões
  1. 85 53
      lib/api_service.dart

+ 85 - 53
lib/api_service.dart

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