flutter iOS模拟器在Apple M1上滚动太快

5n0oy7gb  于 2023-04-13  发布在  Flutter
关注(0)|答案(7)|浏览(229)

我正在运行一个Flutter项目,当拖动任何列表或滚动视图的模拟器,它滚动的方式太多的力量渲染几乎不可能得到的行我需要。
这种情况只会发生在模拟器中,在真实的设备上似乎也能正常工作。而且,这个问题是在我迁移到苹果M1 MacBook Pro时开始的。

有什么想法吗

bvk5enib

bvk5enib1#

我遇到过类似的问题,但在我的情况下,问题与*速度无关,而是不同的东西。
具体来说,如果你强制你的iOS模拟器在Rosetta下运行,你会看到它像预期的那样工作。不知道为什么,但这就是我所经历的。总是可以在1.22.5(稳定)下重现。
要在Rosetta中运行,右键单击Xcode并选择“显示包内容”,从那里您导航到“内容〉开发人员〉应用程序”,在那里您会找到模拟器应用程序。如果您右键单击它并选择“获取信息”,您会发现一个使用Rosetta运行它的选项。

**更新14/9/2021:**Xcode 12.5.1不再需要上述解决方案。滚动功能开箱即用。

g52tjvyc

g52tjvyc2#

[2022 update]接受的答案不再起作用,因为iOS模拟器的“获取信息”对话框中没有与Rotessa一起运行的选项。相反,您可以使用以下命令从终端启动iOS模拟器:

arch -x86_64 /Applications/Xcode.app/Contents/Developer/Applications/Simulator.app/Contents/MacOS/Simulator
3qpi33ja

3qpi33ja3#

在我看来,这个问题在XCode 14/iOS 16中突然又出现了。在ios/Podfile中修复了它

post_install do |installer|
  installer.pods_project.targets.each do |target|
    flutter_additional_ios_build_settings(target)
    target.build_configurations.each do |config|
      config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "arm64 i386"
    end
  end
end

删除arm 64,因此将行更改为:

config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "i386"
b09cbbtk

b09cbbtk4#

一旦你在瞄准arm64的时候运行这个应用程序,Jank就完全消失了。

如果您的依赖项包含本地二进制文件,请不要这样做一个这样的例子是google_maps_flutter,他们不提供arm64二进制文件,因此,尝试在M1上本地编译项目将导致错误。

在xcode中打开应用程序的ios文件夹,单击Runner并编辑Build Settings,使Architectures指向arm64,并且Excluded Architectures不包含arm64

9cbw7uwe

9cbw7uwe5#

只需要使用x86_64模拟器。关闭模拟器后在终端上执行以下步骤

1. Get list device ID:
xcrun simctl list

2. Launch:
xcrun simctl boot [deviceID] --arch=x86_64

Ex:
xcrun simctl boot 2BDDB447-AA8D-4BD4-8BFA-2F54363C2235 --arch=x86_64

有时模拟器不会自动启动,所以你需要在第2步后手动打开它

lvmkulzt

lvmkulzt6#

如果你正在使用AndroidStudio,试试这个。
1.找到“Flutter Performance”并打开。

1.启用慢速动画

模拟器滚动会慢得多。

mf98qq94

mf98qq947#

这可能是因为仿真器由于使用ARM而更快。
是不是唯一一个加速动画?也许还有更多。如果是,设置timeDilatation

import 'package:flutter/scheduler.dart' show timeDilation;

void main() {
  timeDilation = 2.0;
  runApp(new MyApp());
}

相关问题