返回

Flutter 2.0 中的 resamplingEnabled:一场沉默的杀手

Android

引言

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 功能是一个警示,提醒我们即使是看似微小的设置也可能对用户体验产生深远的影响。通过了解这种潜在的祸害并采取适当的措施,开发人员可以保护他们的应用程序免遭意外故障和用户不满。