Flutter 2.0 中的 resamplingEnabled:一场沉默的杀手
2023-12-31 23:34:37
引言
Flutter 2.0 的发布带来了激动人心的新功能和改进,但它也潜伏着一个暗藏的杀手——resamplingEnabled。这个看似不起眼的设置可以给 Android 设备带来毁灭性的后果,导致点击事件的异常行为。
resamplingEnabled:祸根的根源
resamplingEnabled 旨在改善在不同刷新率屏幕上显示滚动内容的体验。当开启时,Flutter 引擎将尝试以设备的刷新率重新采样光标运动事件。虽然这个功能很有意义,但它在某些 Android 设备上却带来了灾难性的问题。
一场无声的悲剧:点击异常
当 resamplingEnabled 在受影响的设备上启用时,点击事件会变得混乱。用户可能会发现难以准确点击按钮或其他交互元素。这可能会导致挫败感、错误输入甚至应用崩溃。
揭开谜团:罪魁祸首
深入调查后,发现点击异常是由 Flutter 引擎和 Android 系统之间的不兼容引起的。当 resamplingEnabled 启用时,Flutter 引擎重新采样的事件速度与 Android 系统预期的不一致。这种差异导致点击被误认为是拖动或其他手势,从而引发异常行为。
悄无声息的灾难:影响的范围
受影响的设备范围很广,从 Pixel 系列到三星 Galaxy 系列。值得注意的是,并非所有设备都会出现此问题,但即使是一个受影响的设备也会对用户体验造成重大影响。
修复之路:禁用 resamplingEnabled
目前解决此问题的唯一方法是禁用 resamplingEnabled。以下是在 Flutter 应用程序中执行此操作的步骤:
@override
void initState() {
WidgetsBinding.instance!.addPersistentFrameCallback((_) {
AndroidViewController.resamplingEnabled = false;
});
super.initState();
}
教训学得:谨慎更新
resamplingEnabled 的案例突出了在更新软件时保持警惕的重要性。虽然新功能可能很有吸引力,但了解其潜在后果至关重要。在将 Flutter SDK 升级到 2.0 之前,建议开发人员测试其应用程序并了解已知问题。
结论
Flutter 2.0 中的 resamplingEnabled 功能是一个警示,提醒我们即使是看似微小的设置也可能对用户体验产生深远的影响。通过了解这种潜在的祸害并采取适当的措施,开发人员可以保护他们的应用程序免遭意外故障和用户不满。