infinum / flutter-charts

Customizable charts library for flutter.
https://pub.dev/packages/charts_painter
MIT License
144 stars 42 forks source link

Animated Chart Type Error when using duration over 30 milliseconds #96

Open floodoo opened 1 year ago

floodoo commented 1 year ago

Description:

I encountered an issue with the Animated Chart in your charts_painter library. Specifically, when I set the animation duration over 30 milliseconds, I receive the following error:

Exception: type 'ChartItem<void>' is not a subtype of type 'ChartItem<MyCustomModel?>' of 'startValue' or Exception: type 'ChartItem<void>' is not a subtype of type 'ChartItem<MyCustomModel?>' of 'endValue'

Stacktrace

String: type 'ChartItem<void>' is not a subtype of type 'ChartItem<MyCustomModel?>' of 'endValue'
#0      ChartItem.animateTo (package:charts_painter/chart/model/geometry/chart_item.dart:21:41)
#1      ChartItemsLerp._lerpItemList.<anonymous closure> (package:charts_painter/chart/model/data/chart_data.dart:237:25)
#2      new _GrowableList.generate (dart:core-patch/growable_array.dart:136:28)
#3      ChartItemsLerp._lerpItemList (package:charts_painter/chart/model/data/chart_data.dart:193:12)
#4      ChartItemsLerp.lerpValues.<anonymous closure> (package:charts_painter/chart/model/data/chart_data.dart:181:14)
#5      new _GrowableList.generate (dart:core-patch/growable_array.dart:136:28)
#6      ChartItemsLerp.lerpValues (package:charts_painter/chart/model/data/chart_data.dart:180:12)
#7      ChartData.lerp (package:charts_painter/chart/mode<…>

However, the error doesn't occur when using the non-animated Chart or when the animation duration is set to or under 30 milliseconds.

Steps to Reproduce:

  1. Use the Animated Chart
  2. Set the animation duration to 300 milliseconds.
  3. Observe the error.

Expected Behavior:

The chart should animate without errors.

Actual Behavior:

An error is thrown when the animation duration is 300 milliseconds.

Workaround:

Use the Chart without animation. Set the animation duration to 30 milliseconds.

Environment:

Flutter version: 3.13.2 charts_painter version: 3.1.1 OS: macOS with an iOS Simulator iPhone 14 Pro Max

lukaknezic commented 1 year ago

@floodoo Can you provide a code snippet where you get this issue? I tried with charts from example but couldn't reproduce this issue

floodoo commented 1 year ago

No sry, I can't provide any code due to company confidentiality.

lukaknezic commented 1 year ago

Hi @floodoo. Sorry for late reply but can you maybe make a snippet that won't actually use any confidential data? I just need minimal reproducable code where this happens. I tried saving custom model to charts items and having animations over and under 30 ms but I could not reproduce this issue

wagner-araujo-ramos commented 2 months ago

I'm having the same issue here, and it happens when i have like 3 lists of data, and one of them has a different length because the data is still missing at that time, if i fill the problematic array with zeroes, the bug doesn't happen. (But i don't want to show zero values) And the error is like:

image

If i set the animation duration to 0, the exception is not thrown