folders actions #5
					 1 changed files with 53 additions and 51 deletions
				
			
		| 
						 | 
				
			
			@ -8,8 +8,12 @@ import 'structs.dart';
 | 
			
		|||
class CollapsableEmails extends StatefulWidget {
 | 
			
		||||
  final List<String> thread; // email id's in the form xyz@gmail.com
 | 
			
		||||
  final List<String> threadHTML;
 | 
			
		||||
  final String threadIDs;
 | 
			
		||||
 | 
			
		||||
  CollapsableEmails({required this.thread, required this.threadHTML});
 | 
			
		||||
  CollapsableEmails(
 | 
			
		||||
      {required this.thread,
 | 
			
		||||
      required this.threadHTML,
 | 
			
		||||
      required this.threadIDs});
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  State<CollapsableEmails> createState() => _CollapsableEmailsState();
 | 
			
		||||
| 
						 | 
				
			
			@ -21,12 +25,15 @@ class _CollapsableEmailsState extends State<CollapsableEmails> {
 | 
			
		|||
  Set<int> _expandedEmails = {}; //open emails
 | 
			
		||||
  List viewtypeIDs = []; //IDs of the viewtypes, order matters
 | 
			
		||||
  List heightOfViewTypes = []; //the height of each viewtype
 | 
			
		||||
  List<SerializableMessage> emailsInThread = [];
 | 
			
		||||
  bool _isLoaded = false;
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  void initState() {
 | 
			
		||||
    // TODO: implement initState
 | 
			
		||||
    super.initState();
 | 
			
		||||
    _registerViewFactory(widget.threadHTML);
 | 
			
		||||
    _serializableData(widget.threadIDs);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  void _registerViewFactory(List<String> currentContent) async {
 | 
			
		||||
| 
						 | 
				
			
			@ -70,27 +77,21 @@ class _CollapsableEmailsState extends State<CollapsableEmails> {
 | 
			
		|||
      viewtypeIDs.add(viewTypeId);
 | 
			
		||||
      heightOfViewTypes.add(heightOfEmail);
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
    // viewTypeId = 'iframe-${DateTime.now().millisecondsSinceEpoch}';
 | 
			
		||||
    // final emailHTML = web.document.createElement('div') as web.HTMLDivElement
 | 
			
		||||
    //   ..id = viewTypeId
 | 
			
		||||
    //   ..innerHTML = currentContent[0].toJS; // temporarily index because it has to do all of them
 | 
			
		||||
    // emailHTML.style
 | 
			
		||||
    //   ..width = '100%'
 | 
			
		||||
    //   ..height = '100%'
 | 
			
		||||
    //   ..overflow = 'auto'
 | 
			
		||||
    //   ..scrollBehavior = 'smooth';
 | 
			
		||||
 | 
			
		||||
    // ui.platformViewRegistry.registerViewFactory(
 | 
			
		||||
    //   viewTypeId,
 | 
			
		||||
    //   (int viewId) => emailHTML,
 | 
			
		||||
    // );
 | 
			
		||||
    // });
 | 
			
		||||
  void _serializableData(String threadID) async {
 | 
			
		||||
    emailsInThread = await ApiService().threadsInSerializable(threadID);
 | 
			
		||||
    print("done thread serializable");
 | 
			
		||||
    if (!mounted) return;
 | 
			
		||||
    setState(() {
 | 
			
		||||
      _isLoaded = true;
 | 
			
		||||
    });
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  Widget build(BuildContext context) {
 | 
			
		||||
    return Column(children: [
 | 
			
		||||
    return _isLoaded 
 | 
			
		||||
      ?Column(children: [
 | 
			
		||||
        Expanded(
 | 
			
		||||
          child: ListView.builder(
 | 
			
		||||
            itemCount: widget.thread.length,
 | 
			
		||||
| 
						 | 
				
			
			@ -100,7 +101,8 @@ class _CollapsableEmailsState extends State<CollapsableEmails> {
 | 
			
		|||
              return Column(
 | 
			
		||||
                children: [
 | 
			
		||||
                  ListTile(
 | 
			
		||||
                  title: Text("email $index"),
 | 
			
		||||
                    title: Text(emailsInThread[index].from),
 | 
			
		||||
                    trailing: Text(emailsInThread[index].date),
 | 
			
		||||
                    onTap: () {
 | 
			
		||||
                      setState(() {
 | 
			
		||||
                        if (isExpanded) {
 | 
			
		||||
| 
						 | 
				
			
			@ -115,7 +117,7 @@ class _CollapsableEmailsState extends State<CollapsableEmails> {
 | 
			
		|||
                    // if(viewtypeIDs[index] == null || heightOfViewTypes[index] == null)
 | 
			
		||||
                    //   const SizedBox(height: 100, child: Center(child: CircularProgressIndicator())),
 | 
			
		||||
                    SizedBox(
 | 
			
		||||
                    height:heightOfViewTypes[index].toDouble(),
 | 
			
		||||
                      height: heightOfViewTypes[index].toDouble(),
 | 
			
		||||
                      child: HtmlElementView(
 | 
			
		||||
                          key: UniqueKey(), viewType: viewtypeIDs[index]),
 | 
			
		||||
                    ),
 | 
			
		||||
| 
						 | 
				
			
			@ -125,6 +127,6 @@ class _CollapsableEmailsState extends State<CollapsableEmails> {
 | 
			
		|||
            },
 | 
			
		||||
          ),
 | 
			
		||||
        )
 | 
			
		||||
    ]);
 | 
			
		||||
    ]): const Center(child:CircularProgressIndicator());
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue