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] Trackball disappears if finger drags too quickly after initial tap #1832

Closed btrautmann closed 1 week ago

btrautmann commented 3 weeks ago

Bug description

At some point recently I began noticing that the trackball disappears if the finger moves quickly after initial tap. This did not happen before as far as I know.

Steps to reproduce

  1. Implement a chart with trackball
  2. Place finger down on chart and move right after placing it
  3. See trackball pop up and then disappear

If however you let the finger rest after tapping for a second and then move, the trackball remains.

Code sample

Code sample ```dart trackballBehavior: TrackballBehavior( enable: true, tooltipDisplayMode: TrackballDisplayMode.groupAllPoints, builder: (context, details) { return Text(details.toString()); }, activationMode: ActivationMode.singleTap, ), ```

A full sample can be seen on the main branch of https://github.com/btrautmann/syncfusion_charts_repros (see video)

Screenshots or Video

Screenshots / Video demonstration https://github.com/syncfusion/flutter-widgets/assets/8343465/798b7ff9-d6e6-404b-b7b6-1f46c30905b5

Stack Traces

Stack Traces None

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 (7 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 2024.1) • 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 ```
LokeshPalani commented 2 weeks ago

Hi @btrautmann,

We have checked the reported issue and tried to replicate it in the SfCartesianChart with version 25.1.41+2 by enabling the TrackballBehavior feature. We have tested by tapping on the PlotArea and instantly moving the finger left and right in the Mobile platform. However, we were unable to reproduce it on our end. Please check the attached sample and screen recording, and if you are still experiencing the issue, we request that you replicate it in the attached sample and provide us with more details regarding the specific scenario in which you are encountering this issue. This will help us to assist you more effectively.

Regards, Lokesh P.

chart_584064 (2) (1).zip

btrautmann commented 2 weeks ago

@LokeshPalani I downloaded and extracted the attached sample and ran flutter pub get in the workspace and then directly installed it to an iPhone 15 Pro simulator running iOS 17.4. I was able to reproduce the issue still. Please see the attached video.

Of note, this issue does NOT occur if upon pressing down on the chart you quickly move up or down on the Y axis before scrolling horizontally (I did this towards the end of the video). If you instead tap and immediately move left or right on the X axis, the issue occurs.

https://github.com/syncfusion/flutter-widgets/assets/8343465/12067050-8b81-4978-91b7-e2cef1bfec17

Here's another video where you can see my cursor the whole time:

https://github.com/syncfusion/flutter-widgets/assets/8343465/2e162bf6-243e-4ec0-ab0e-25e06ac02f3b

btrautmann commented 1 week ago

@LokeshPalani were you able to reproduce this on your end? It's a pretty stinky UX, would love a fix if possible 🙏 Thanks for all the work y'all do!

LokeshPalani commented 1 week ago

Hi @btrautmann,

We can replicate the issue from your previous inputs. However, the panning and Trackball are enabled in single tap activation mode, so we have given high priority to panning. And the trackball is hidden when the pointer is down and moving. We suggest that you use the trackball in long pressing activation mode to overcome this issue.

Regards, Lokesh P.

btrautmann commented 1 week ago

@LokeshPalani thanks for the explanation. That makes sense, and in my particular case where many charts are shown on a single page that allows scrolling, a long-press activated trackball ensures the trackball doesn't show up when attempting to scroll, making the list feel a bit smoother overall.

I will say that I don't recall this always being the case (I thought this worked fine before), but I may be misremembering.

Either way, it sounds like expected behavior and I think it's safe to close this issue (allowing you to do this as it seems you have a well-defined process for ticket management).