我正在运行一个颤振项目,当在模拟器上拖动任何列表或滚动视图时,它滚动的力太大,几乎不可能到达我需要的行。
这仅发生在模拟器中,并且在真实设备上似乎可以正常工作。此外,当我迁移到 Apple M1 MacBook Pro 时,这个问题就开始了。
有任何想法吗?
我正在运行一个颤振项目,当在模拟器上拖动任何列表或滚动视图时,它滚动的力太大,几乎不可能到达我需要的行。
这仅发生在模拟器中,并且在真实设备上似乎可以正常工作。此外,当我迁移到 Apple M1 MacBook Pro 时,这个问题就开始了。
有任何想法吗?
我遇到了类似的问题,但就我而言,问题与速度无关,而是与速度不同。
具体来说,如果您强制您的 iOS 模拟器在 Rosetta 下运行,您将看到它按预期工作。不知道为什么,但这就是我正在经历的。始终可在 1.22.5(稳定)中重现。
要在 Rosetta 中运行,右键单击 Xcode 并选择“显示包内容”,从那里导航到“内容 > 开发人员 > 应用程序”,在那里你会找到模拟器应用程序。如果您右键单击它并选择“获取信息”,您将找到一个使用 Rosetta 运行它的选项。
2021 年 9 月 14 日更新: Xcode 12.5.1 不再需要上述解决方法。开箱即用的滚动效果很好。
一旦你以 arm64 为目标运行应用程序,Jank 就完全消失了。
如果您的依赖项包含原生二进制文件,请不要这样做google_maps_flutter 就是一个这样的例子,它们不提供 arm64 二进制文件,因此,尝试在 M1 上原生编译项目会导致错误。
ios
在xcode中打开app的文件夹,点击Runner
编辑Build Settings
,使其Architectures
指向arm64
且不Excluded Architectures
包含arm64
(尽管这些 gif 只有 10 秒长,但它们超过 2MB,无法嵌入,抱歉)
Runner
关于Intel
jank:https ://i.imgur.com/P4pswQn.mp4Runner
在没有卡顿的情况下: httpsarm64
://i.imgur.com/zqGIe2L.mp4这可能是因为模拟器由于使用了 ARM 而变得更快。
它是唯一的加速动画吗?也许还有更多。如果是这样,请设置timeDilatation
.
import 'package:flutter/scheduler.dart' show timeDilation;
void main() {
timeDilation = 2.0;
runApp(new MyApp());
}