flutter 如果用户没有先拖动,iOS的fling滚动速度太低,

aemubtdh  于 6个月前  发布在  Flutter
关注(0)|答案(3)|浏览(169)

重现步骤

在iOS上,如果你快速向上滑动屏幕,而没有先拖动视图再进行抛掷,那么抛掷滚动速度大约是它应该的一半。
换句话说:
场景1:你触摸并按住一个视图,开始滚动,然后在不抬起手指的情况下,快速向上抛掷。抛掷滚动与预期的速度相匹配,例如 v
场景2:开始不触摸屏幕,然后在一个动作中,快速在屏幕上向上滑动(与场景1中的抛掷动作的速度相同,但在启动滚动之前没有先拖动),然后立即再次抬起手指。这将以类似于 v / 2 的速度滚动。
出于某种原因,在抛掷之前启动拖动会将抛掷速度加倍,并使其更好地匹配实际的抛掷速度。
(这假设为了获得实际的预期速度,你已经应用了 #149221 中的修复。否则在两个场景中,抛掷速度都太慢,尽管速度之间的比例仍然保持不变。)

预期结果

无论是否首先拖动而不抛掷,抛掷速度应该是相同的。

实际结果

如果在没有先拖动的情况下快速向上抛掷屏幕,抛掷速度会非常缓慢(大约是它应该的一半)。

代码示例

N/A

截图或视频

N/A

日志

N/A

Flutter Doctor输出

Doctor output

% flutter doctor -v
[✓] Flutter (Channel beta, 3.22.0-0.3.pre, on macOS 14.5 23F79 darwin-x64, locale en-US)
• Flutter version 3.22.0-0.3.pre on channel beta at /Users/luke/flutter
• Upstream repository https://github.com/flutter/flutter.git
• Framework revision 87b652410d (5 weeks ago), 2024-04-23 21:41:18 -0500
• Engine revision b4bfd45986
• Dart version 3.4.0 (build 3.4.0-282.3.beta)
• DevTools version 2.34.3

[✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0)
• Android SDK at /Users/luke/Library/Android/sdk
• Platform android-34, build-tools 34.0.0
• Java binary at: /Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java
• Java version OpenJDK Runtime Environment (build 17.0.10+0-17.0.10b1087.21-11572160)
• 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.15.2

[✓] Chrome - develop for the web
• Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 2023.3)
• 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.10+0-17.0.10b1087.21-11572160)

[✓] VS Code (version 1.89.1)
• VS Code at /Applications/Visual Studio Code.app/Contents
• Flutter extension version 3.89.20240501

Scan[✓] Connected device (3 available)            
• iPhone SE (2nd generation) (mobile) • 00008030-000C38343C23402E • ios            • iOS 17.4.1 21E236
• macOS (desktop)                     • macos                     • darwin-x64     • macOS 14.5 23F79 darwin-x64
• Chrome (web)                        • chrome                    • web-javascript • Google Chrome 125.0.6422.77

[✓] Network resources
• All expected network resources are available.

• No issues found!
eqzww0vc

eqzww0vc1#

场景1:你触摸并按住一个视图,开始滚动,然后在不抬起手指的情况下,快速向上弹起。弹跳滚动与预期的速度相匹配,例如 v
场景2:开始不触摸屏幕,然后在一个动作中,快速在屏幕上滑动(与场景1中的弹跳动作速度相同,但在首先拖动以启动滚动之前没有拖动),然后立即再次抬起手指。这将以类似于 v / 2 的速度滚动。
@lukehutch 我尝试了这些场景,利用了简单的 ListView 代码,我不确定是否可以通过先拖动列表,然后再弹跳来观察报告的行为,我观察到的滚动是平滑的。

  1. 原生 iOS(应用商店):
    RPReplay-Final1716976978.MP4
  2. 简单的 ListView 示例(Flutter):
    RPReplay-Final1716977431.MP4
    如果上述内容不能代表您描述的情况,请提供您所看到的简短视频,以便进行进一步的操作。
ogq8wdun

ogq8wdun2#

@darshankawar 这里是您要的:
[https://photos.app.goo.gl/tc87WuGJpjhzyFtL9](https://photos.app.goo.gl/tc87WuGJpjhzyFtL9)
mkh04yzy

mkh04yzy3#

感谢您的视频。我会保持这个问题开放,并为团队关注标签。

相关问题