email.dart 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228
  1. // import 'package:flutter/material.dart';
  2. // import 'package:http/http.dart' as http;
  3. // import 'dart:convert';
  4. // import 'dart:ui_web' as ui;
  5. // import 'dart:html' as html;
  6. // // import 'package:flutter_html/flutter_html.dart';
  7. // class SerializableMessage {
  8. // final String name;
  9. // final String from;
  10. // final String path;
  11. // final String subject;
  12. // final String date;
  13. // SerializableMessage(
  14. // {required this.name,
  15. // required this.from,
  16. // required this.path,
  17. // required this.subject,
  18. // required this.date});
  19. // factory SerializableMessage.fromJson(Map<String, dynamic> json) {
  20. // return SerializableMessage(
  21. // name: json['name'],
  22. // from: json['from'],
  23. // path: json['path'],
  24. // subject: json['subject'],
  25. // date: json['date']);
  26. // }
  27. // }
  28. // class EmailPage extends StatefulWidget {
  29. // const EmailPage({super.key});
  30. // final String title = 'cars';
  31. // @override
  32. // State<EmailPage> createState() => _EmailPageState();
  33. // }
  34. // class _EmailPageState extends State<EmailPage> {
  35. // List emails = [];
  36. // // @override
  37. // // void initState() {
  38. // // super.initState();
  39. // // }
  40. // //register the html element
  41. // ui.platformViewRegistry.registerViewFactory(
  42. // 'html-view',
  43. // (int viewId) => html.IFrameElement()
  44. // ..width = '100%'
  45. // ..height = '100%'
  46. // ..srcdoc = r"""
  47. // """
  48. // ..style.border = 'none',
  49. // );
  50. // void _displayEmailsFromFolder(String folder) async {
  51. // Map<String, List<SerializableMessage>> messagesMap = {};
  52. // try {
  53. // var url = Uri.http(
  54. // '127.0.0.1:3001', 'sorted_threads_by_date', {'folder': folder});
  55. // var response = await http.get(url);
  56. // Map<String, dynamic> json = jsonDecode(response.body);
  57. // json.forEach((key, value) {
  58. // List<SerializableMessage> messages = (value as List)
  59. // .map((item) => SerializableMessage.fromJson(item))
  60. // .toList();
  61. // messagesMap[key] = messages;
  62. // });
  63. // } catch (e) {
  64. // print('_displayEmailsFromFolder caught error: $e');
  65. // }
  66. // setState(() {
  67. // emails.clear();
  68. // emails = messagesMap.values.toList().expand((list) => list).toList();
  69. // ;
  70. // });
  71. // }
  72. // Future<List<Widget>> _getDrawerItems() async {
  73. // List<String> drawerItems = [];
  74. // try {
  75. // var url = Uri.http('127.0.0.1:3001', 'folders');
  76. // var response = await http.get(url);
  77. // drawerItems = List<String>.from(json.decode(response.body));
  78. // } catch (e) {
  79. // print('_getDrawerItems caught error: $e');
  80. // }
  81. // List<Widget> drawerWidgets = [];
  82. // for (String item in drawerItems) {
  83. // drawerWidgets.add(
  84. // ListTile(
  85. // leading: Icon(Icons.mail),
  86. // title: Text(item),
  87. // onTap: () {
  88. // _displayEmailsFromFolder(item);
  89. // Navigator.pop(context);
  90. // },
  91. // ),
  92. // );
  93. // }
  94. // return drawerWidgets;
  95. // }
  96. // @override
  97. // Widget build(BuildContext context) {
  98. // return Scaffold(
  99. // appBar: AppBar(
  100. // backgroundColor: Theme.of(context).colorScheme.inversePrimary,
  101. // title: Text(widget.title),
  102. // ),
  103. // drawer: Drawer(
  104. // child: FutureBuilder<List<Widget>>(
  105. // future:
  106. // _getDrawerItems(), // call the async function to get the future
  107. // builder:
  108. // (BuildContext context, AsyncSnapshot<List<Widget>> snapshot) {
  109. // if (snapshot.connectionState == ConnectionState.waiting) {
  110. // // While data is loading, show a progress indicator
  111. // return Center(child: CircularProgressIndicator());
  112. // } else if (snapshot.hasError) {
  113. // // If something went wrong, show an error message
  114. // return Center(child: Text('Error: ${snapshot.error}'));
  115. // } else {
  116. // // When data is fetched successfully, display the items
  117. // return ListView(
  118. // padding: EdgeInsets.zero,
  119. // children:
  120. // snapshot.data!, // Unwrap the data once confirmed it's there
  121. // );
  122. // }
  123. // },
  124. // ),
  125. // ),
  126. // body: EmailListScreen(
  127. // emails: emails,
  128. // ),
  129. // );
  130. // }
  131. // }
  132. // class EmailListScreen extends StatelessWidget {
  133. // List emails;
  134. // EmailListScreen({required this.emails});
  135. // @override
  136. // Widget build(BuildContext context) {
  137. // print(emails);
  138. // return Scaffold(
  139. // appBar: AppBar(
  140. // title: Text('Emails'),
  141. // ),
  142. // body: ListView.separated(
  143. // itemCount: emails.length,
  144. // itemBuilder: (context, index) {
  145. // return ListTile(
  146. // title: Text(emails[index].from,
  147. // style: TextStyle(fontWeight: FontWeight.bold)),
  148. // subtitle: Column(
  149. // crossAxisAlignment: CrossAxisAlignment.start,
  150. // children: [
  151. // Text(emails[index].subject),
  152. // ],
  153. // ),
  154. // trailing: Text(emails[index].date.toString()),
  155. // onTap: () {
  156. // Navigator.push(
  157. // context,
  158. // MaterialPageRoute(
  159. // builder: (context) => EmailView(emailContent: "")),
  160. // );
  161. // });
  162. // },
  163. // separatorBuilder: (context, index) {
  164. // return Divider();
  165. // },
  166. // ),
  167. // );
  168. // }
  169. // }
  170. // class HtmlContentWidget extends StatelessWidget {
  171. // @override
  172. // Widget build(BuildContext context) {
  173. // return Container(
  174. // width: 800,
  175. // height: 10000,
  176. // child: HtmlElementView(viewType: 'html-view'),
  177. // );
  178. // }
  179. // }
  180. // class EmailView extends StatelessWidget {
  181. // final String emailContent;
  182. // EmailView({required this.emailContent});
  183. // @override
  184. // Widget build(BuildContext context) {
  185. // return Scaffold(
  186. // appBar: AppBar(
  187. // title: Text("HTML Content"),
  188. // ),
  189. // body: Container(
  190. // width: 800,
  191. // height: 10000,
  192. // child: HtmlElementView(
  193. // viewType: 'html-view',
  194. // ),
  195. // )
  196. // // Text(
  197. // // """
  198. // // <h1>Heading</h1>
  199. // // <p>This is a <strong>simple</strong> HTML example.</p>
  200. // // """,
  201. // // ),
  202. // );
  203. // }r
  204. // }