如何防止 Flutter Web 中的 CTRL 和滚轮/触控板缩放?

cre*_*not 3 html javascript dom flutter flutter-web

问题

如果我CTRL在 Chrome (Windows) 中使用 + 滚轮或捏合触控板进行缩放,我会看到以下奇怪的行为:

Flutter Web 应用程序正在调整大小,但也留下了痕迹。

使用案例

例如,如果我想覆盖滚动放大/触控板缩放行为,以便在我的 Flutter Web 应用程序中使用它来放大画布,这会阻止我这样做。即使我对缩放手势做出反应,Flutter 也不会阻止这种默认行为。

那么我该如何防止这种情况发生呢?

cre*_*not 6

使用 HTML DOM JavaScript 可以简单地防止这种情况:

// This prevents zooming in using CTRL + mouse wheel.
// See https://stackoverflow.com/a/67039291/6509751.
document.addEventListener('wheel', function(e) {
  e.ctrlKey && e.preventDefault();
}, {
  passive: false,
});
Run Code Online (Sandbox Code Playgroud)

只需将其添加到Flutter Web 应用程序文件<body>的标签中即可:index.html

<script>
  // This prevents zooming in using CTRL + mouse wheel.
  // See https://stackoverflow.com/a/67039291/6509751.
  document.addEventListener('wheel', function(e) {
    e.ctrlKey && e.preventDefault();
  }, {
    passive: false,
  });
</script>
Run Code Online (Sandbox Code Playgroud)