jja08111/time_chart

scroll chart get stuck with dynamic data ...

Opened this issue · 1 comments

Hi,

I was having issues with the widget scroll when loading my data. It was strange because I was playing initially with sample data and everything was looking fine, but once I implemented my firebase method then I started experiencing the issue.

It appears that the widget scroll get freeze/stuck with dynamic data. Let's say you first load and empty List, then you load 10 days of data, in this scenario, the scroll do a bounce whenever you try to scroll and you can only see 1 page of data.

If you initially load 2 weeks of data (2 pages on your view) and you then load 3 or more weeks of data, the scroll bounce after the second page, and so on ...

This is the code I'm using just in case you want to reproduce.
computeDataForChart loads the data from Firestone, sampleData is part of the data I have in Firebase that I have copied just to doublecheck the scroll behaviour, so you can short the data to play around. finally my TimeChart widget.

// COMPUTE JOURNEY REGISTERS List<DateTimeRange> computeDataForChart( QuerySnapshot<Map<String, dynamic>>? d) { List<DateTimeRange> dates = []; if (d != null && d.docs.isNotEmpty) { for (var doc in d.docs) { if (doc['startTimes'] != null) { int i = 0; for (var s in doc['startTimes']) { dates.add(DateTimeRange( start: s.toDate(), end: (doc['timeFrames'] != null && doc['timeFrames'].length > i) ? s.toDate().add(Duration(seconds: doc['timeFrames'][i])) : today())); i++; } } } } return (dates.isEmpty) ? dates : dates.reversed.toList(); } }

List<DateTimeRange> sampleData = [ DateTimeRange( start: DateTime(2023, 07, 31, 08, 00), end: DateTime(2023, 07, 31, 13, 30), ), DateTimeRange( start: DateTime(2023, 07, 31, 14, 30), end: DateTime(2023, 07, 31, 17, 00), ), DateTimeRange( start: DateTime(2023, 08, 01, 08, 00), end: DateTime(2023, 08, 01, 13, 30), ), DateTimeRange( start: DateTime(2023, 08, 01, 14, 30), end: DateTime(2023, 08, 01, 17, 00), ), DateTimeRange( start: DateTime(2023, 08, 02, 08, 00), end: DateTime(2023, 08, 02, 16, 00), ), DateTimeRange( start: DateTime(2023, 08, 03, 08, 00), end: DateTime(2023, 08, 03, 13, 30), ), DateTimeRange( start: DateTime(2023, 08, 03, 14, 30), end: DateTime(2023, 08, 03, 17, 00), ), DateTimeRange( start: DateTime(2023, 08, 04, 08, 00), end: DateTime(2023, 08, 04, 13, 30), ), DateTimeRange( start: DateTime(2023, 08, 04, 14, 30), end: DateTime(2023, 08, 04, 17, 00), ), DateTimeRange( start: DateTime(2023, 08, 07, 08, 00), end: DateTime(2023, 08, 07, 17, 25), ), DateTimeRange( start: DateTime(2023, 08, 08, 08, 00), end: DateTime(2023, 08, 08, 13, 30), ), DateTimeRange( start: DateTime(2023, 08, 08, 14, 30), end: DateTime(2023, 08, 08, 17, 00), ), DateTimeRange( start: DateTime(2023, 08, 09, 08, 00), end: DateTime(2023, 08, 09, 13, 30), ), DateTimeRange( start: DateTime(2023, 08, 09, 14, 30), end: DateTime(2023, 08, 09, 17, 00), ), DateTimeRange( start: DateTime(2023, 08, 10, 08, 00), end: DateTime(2023, 08, 10, 13, 30), ), DateTimeRange( start: DateTime(2023, 08, 10, 14, 30), end: DateTime(2023, 08, 10, 17, 00), ), DateTimeRange( start: DateTime(2023, 08, 11, 08, 00), end: DateTime(2023, 08, 11, 17, 48), ), DateTimeRange( start: DateTime(2023, 08, 14, 08, 00), end: DateTime(2023, 08, 14, 13, 30), ), DateTimeRange( start: DateTime(2023, 08, 14, 14, 30), end: DateTime(2023, 08, 14, 17, 00), ), DateTimeRange( start: DateTime(2023, 08, 15, 08, 00), end: DateTime(2023, 08, 15, 13, 30), ), DateTimeRange( start: DateTime(2023, 08, 15, 14, 30), end: DateTime(2023, 08, 15, 17, 00), ), DateTimeRange( start: DateTime(2023, 08, 16, 08, 00), end: DateTime(2023, 08, 16, 15, 00), ), DateTimeRange( start: DateTime(2023, 08, 17, 08, 00), end: DateTime(2023, 08, 17, 15, 06), ), DateTimeRange( start: DateTime(2023, 08, 18, 08, 00), end: DateTime(2023, 08, 18, 12, 00), ), DateTimeRange( start: DateTime(2023, 08, 18, 13, 00), end: DateTime(2023, 08, 18, 15, 00), ), DateTimeRange( start: DateTime(2023, 08, 21, 08, 00), end: DateTime(2023, 08, 21, 15, 59), ), DateTimeRange( start: DateTime(2023, 08, 22, 08, 00), end: DateTime(2023, 08, 22, 16, 00), ), DateTimeRange( start: DateTime(2023, 08, 23, 08, 00), end: DateTime(2023, 08, 23, 21, 41), ), DateTimeRange( start: DateTime(2023, 08, 24, 08, 27), end: DateTime(2023, 08, 24, 19, 02), ), DateTimeRange( start: DateTime(2023, 08, 25, 08, 00), end: DateTime(2023, 08, 25, 14, 00), ), DateTimeRange( start: DateTime(2023, 08, 28, 09, 04), end: DateTime(2023, 08, 28, 18, 37), ), DateTimeRange( start: DateTime(2023, 08, 29, 08, 34), end: DateTime(2023, 08, 29, 18, 47), ), DateTimeRange( start: DateTime(2023, 08, 30, 07, 24), end: DateTime(2023, 08, 30, 16, 47), ), DateTimeRange( start: DateTime(2023, 08, 31, 08, 14), end: DateTime(2023, 08, 31, 21, 12), ), DateTimeRange( start: DateTime(2023, 09, 1, 08, 14), end: DateTime(2023, 09, 1, 21, 12), ) ].reversed.toList();

TimeChart( height: MediaQuery.of(context).size.height / 5, data: (r.computeDataForChart(data).isEmpty) ? r.sampleData : r.computeDataForChart(data),

Hi @saguado69! I'm sorry for delay. I've very busy because I'm looking for a job. I'll try to resolve the issue as soon as possible. Thanks!