syncfusion / flutter-widgets

Syncfusion Flutter widgets libraries include high quality UI widgets and file-format packages to help you create rich, high-quality applications for iOS, Android, and web from a single code base.
1.44k stars 672 forks source link

[syncfusion_flutter_charts] RangeError when using trackball #1811

Closed btrautmann closed 1 week ago

btrautmann commented 1 month ago

Bug description

When dragging finger across chart while using trackballBehavior the following is thrown:

The following RangeError was thrown while dispatching a pointer event:
RangeError (index): Invalid value: Valid value range is empty: 0

See below for full stacktrace.

Steps to reproduce

  1. Create Cartesian chart that uses trackballBehavior. Note that the issue seems to be specific to using TrackballDisplayMode.groupAllPoints.
trackballBehavior: TrackballBehavior(
  enable: true,
  tooltipDisplayMode: TrackballDisplayMode.groupAllPoints,
  builder: (context, details) {
    return Text(details.toString());
  },
  activationMode: ActivationMode.singleTap,
),
  1. Tap and hold and drag finger towards Y axis
  2. Once Y axis is hit (or right around it) the error is thrown

Code sample

https://github.com/btrautmann/syncfusion_charts_repros has a reproduction case on main.

Is uses version 25.1.40.

Screenshots or Video

Screenshots / Video demonstration https://github.com/syncfusion/flutter-widgets/assets/8343465/aac2c0ce-d86b-49ac-b31e-f519ccdc7afd

Stack Traces

Stack Traces ```dart The following RangeError was thrown while dispatching a pointer event: RangeError (index): Invalid value: Valid value range is empty: 0 When the exception was thrown, this was the stack: #0 List.[] (dart:core-patch/growable_array.dart:264:36) growable_array.dart:264 #1 SfCartesianChartState._buildTrackballWidget. (package:syncfusion_flutter_charts/src/charts/cartesian_chart.dart:1340:53) cartesian_chart.dart:1340 #2 new _GrowableList.generate (dart:core-patch/growable_array.dart:136:28) growable_array.dart:136 #3 SfCartesianChartState._buildTrackballWidget (package:syncfusion_flutter_charts/src/charts/cartesian_chart.dart:1337:19) cartesian_chart.dart:1337 #4 TrackballBehavior._show (package:syncfusion_flutter_charts/src/charts/behaviors/trackball.dart:665:31) trackball.dart:665 #5 TrackballBehavior.show (package:syncfusion_flutter_charts/src/charts/behaviors/trackball.dart:474:5) trackball.dart:474 #6 TrackballBehavior._showTrackball (package:syncfusion_flutter_charts/src/charts/behaviors/trackball.dart:597:7) trackball.dart:597 #7 TrackballBehavior._handlePointerMove (package:syncfusion_flutter_charts/src/charts/behaviors/trackball.dart:523:7) trackball.dart:523 #8 TrackballBehavior.handleEvent (package:syncfusion_flutter_charts/src/charts/behaviors/trackball.dart:511:7) trackball.dart:511 #9 RenderBehaviorArea.handleEvent (package:syncfusion_flutter_charts/src/charts/interactions/behavior.dart:390:24) behavior.dart:390 #10 RenderChartArea.handleEvent (package:syncfusion_flutter_charts/src/charts/base.dart:401:22) base.dart:401 #11 GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:475:22) binding.dart:475 #12 RendererBinding.dispatchEvent (package:flutter/src/rendering/binding.dart:430:11) binding.dart:430 #13 GestureBinding._handlePointerEventImmediately (package:flutter/src/gestures/binding.dart:420:7) binding.dart:420 #14 GestureBinding.handlePointerEvent (package:flutter/src/gestures/binding.dart:383:5) binding.dart:383 #15 GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:330:7) binding.dart:330 #16 GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:299:9) binding.dart:299 #17 _invoke1 (dart:ui/hooks.dart:328:13) hooks.dart:328 #18 PlatformDispatcher._dispatchPointerDataPacket (dart:ui/platform_dispatcher.dart:429:7) platform_dispatcher.dart:429 #19 _dispatchPointerDataPacket (dart:ui/hooks.dart:262:31) hooks.dart:262 Event: PointerMoveEvent#4ddf4(position: Offset(53.0, 583.3)) position: Offset(53.0, 583.3) Target: RenderCartesianChartArea#0a8bd relayoutBoundary=up1 needs compositing parentData: offset=Offset(0.0, 0.0) (can use size) constraints: BoxConstraints(0.0<=w<=410.0, 0.0<=h<=374.0) layer: OffsetLayer#a78c9 size: Size(410.0, 374.0) ```

On which target platforms have you observed this bug?

Android, iOS

Flutter Doctor output

Doctor output ```console [✓] Flutter (Channel stable, 3.19.3, on macOS 14.4.1 23E224 darwin-arm64, locale en-US) • Flutter version 3.19.3 on channel stable at /Users/brandontrautmann/fvm/versions/3.19.3 • Upstream repository https://github.com/flutter/flutter.git • Framework revision ba39319843 (6 weeks ago), 2024-03-07 15:22:21 -0600 • Engine revision 2e4ba9c6fb • Dart version 3.3.1 • DevTools version 2.31.1 [✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0) • Android SDK at /Users/brandontrautmann/Library/Android/sdk • Platform android-34, build-tools 34.0.0 • ANDROID_HOME = /Users/brandontrautmann/Library/Android/sdk • ANDROID_SDK_ROOT = /Users/brandontrautmann/Library/Android/sdk • Java binary at: /Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java • Java version OpenJDK Runtime Environment (build 17.0.9+0-17.0.9b1087.7-11185874) • All Android licenses accepted. [✓] Xcode - develop for iOS and macOS (Xcode 15.3) • Xcode at /Applications/Xcode.app/Contents/Developer • Build 15E204a • CocoaPods version 1.14.3 [✓] Chrome - develop for the web • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome [✓] Android Studio (version 2023.2) • Android Studio at /Applications/Android Studio.app/Contents • Flutter plugin can be installed from: 🔨 https://plugins.jetbrains.com/plugin/9212-flutter • Dart plugin can be installed from: 🔨 https://plugins.jetbrains.com/plugin/6351-dart • Java version OpenJDK Runtime Environment (build 17.0.9+0-17.0.9b1087.7-11185874) [✓] IntelliJ IDEA Community Edition (version 2023.2.6) • IntelliJ at /Applications/IntelliJ IDEA CE.app • Flutter plugin can be installed from: 🔨 https://plugins.jetbrains.com/plugin/9212-flutter • Dart plugin can be installed from: 🔨 https://plugins.jetbrains.com/plugin/6351-dart [✓] VS Code (version 1.88.1) • VS Code at /Applications/Visual Studio Code.app/Contents • Flutter extension version 3.86.0 [✓] Connected device (4 available) • sdk gphone64 arm64 (mobile) • emulator-5554 • android-arm64 • Android 14 (API 34) (emulator) • iPhone 15 Plus (mobile) • B4AF1ED9-73A2-4B6E-A3CB-D472DB8F8D99 • ios • com.apple.CoreSimulator.SimRuntime.iOS-17-4 (simulator) • macOS (desktop) • macos • darwin-arm64 • macOS 14.4.1 23E224 darwin-arm64 • Chrome (web) • chrome • web-javascript • Google Chrome 123.0.6312.124 ! Error: Browsing on the local area network for Brandon Trautmann’s iPad. Ensure the device is unlocked and attached with a cable or associated with the same local area network as this Mac. The device must be opted into Developer Mode to connect wirelessly. (code -27) [✓] Network resources • All expected network resources are available. • No issues found! ```
PreethikaSelvam commented 1 month ago

Hi @btrautmann,

We can replicate the reported issue regarding the trackball display mode as groupAllPoints with empty points. This issue is scheduled to be fixed in our upcoming weekly release which is scheduled on April 30, 2024. We will update you here once the release is rolled out and we appreciate your patience until then.

Regards,

Preethika Selvam.

LokeshPalani commented 3 weeks ago

Hi @btrautmann,

We would like to let you know that the reported issue is fixed and rolled out in our patch release. We kindly request you to upgrade the syncfusion_flutter_charts package to the latest version below.

Version: https://pub.dev/packages/syncfusion_flutter_charts/versions/25.1.41+1

Root cause: Missed to ensure the length of the trackball info list before getting list of index value.

If you have any further queries, please feel free to reach out to us.

Regards, Lokesh P.

btrautmann commented 3 weeks ago

Thanks @LokeshPalani, I'm confirming that this did fix the issue.

LokeshPalani commented 2 weeks ago

Hi @btrautmann,

Most Welcome. Kindly get back to us if you have further queries. We are always happy to assist you.

Regards, Lokesh P.