state bug fixed :))))
This commit is contained in:
		
							parent
							
								
									45c605f464
								
							
						
					
					
						commit
						ae5fc1304a
					
				
					 1 changed files with 83 additions and 51 deletions
				
			
		| 
						 | 
				
			
			@ -181,27 +181,27 @@ class _EmailPageState extends State<EmailPage> {
 | 
			
		|||
    return content;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  Future<String> _getThreadMessagesJson(String threadId) async {
 | 
			
		||||
    String jsonResponse = "";
 | 
			
		||||
  // 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');
 | 
			
		||||
    }
 | 
			
		||||
  //   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
 | 
			
		||||
  }
 | 
			
		||||
  //   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',
 | 
			
		||||
      ),
 | 
			
		||||
    );
 | 
			
		||||
  }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue