参数类型 'PointerEvent' 无法分配给参数类型 'PointerDownEvent'

The argument type 'PointerEvent' can't be assigned to the parameter type 'PointerDownEvent'

最近我已经更新到 flutter 2.5 和最新的 androids studio,并尝试将我的 flutter 项目编译到 android 设备。 Android studio 向我抛出以下错误。如果我在终端中写 flutter run 编译到 android 设备没有问题。

猜想这一定与android工作室有关。我尝试降级到更早的 android 工作室版本,但问题仍然存在。

我不确定这是什么插件,它看起来不像我在我的项目中使用的任何插件。

编辑:如果我将 flutter 从 2.5 降级到 2.0,我的项目将再次编译。所以问题出在 flutter 2.5

Launching lib/main.dart on Android SDK built for x86 in debug mode...
Running Gradle task 'assembleDebug'...
../plugins/flutter/.pub-cache/hosted/pub.dartlang.org/photo_view-0.11.1/lib/src/core/photo_view_gesture_detector.dart:106:29: Error: The argument type 'PointerEvent' can't be assigned to the parameter type 'PointerDownEvent'.
 - 'PointerEvent' is from 'package:flutter/src/gestures/events.dart' ('../plugins/flutter/packages/flutter/lib/src/gestures/events.dart').
 - 'PointerDownEvent' is from 'package:flutter/src/gestures/events.dart' ('../plugins/flutter/packages/flutter/lib/src/gestures/events.dart').
    super.addAllowedPointer(event);

flutter 2.5 版有一个 API 变化,几个包必须相应更新。 您的日志显示包含错误的确切包是 photo_view.

幸运的是,该软件包刚刚更新以解决此问题,因此只需在您的 pubspec.yaml:

中更新其版本即可
photo_view: ^0.12.0

更新

如果你的 pubspec 中没有直接的包

你有两个选择

1 可能是暂时性依赖,可以运行 flutter pub deps 列出已安装的软件包及其依赖项,并尝试更新使用 photo_view 的软件包(如果它确实有更新)

2 为您的 pubspec.yaml 添加依赖项覆盖,这将有效地覆盖正在使用的包的版本

dependency_overrides:
  photo_view: ^0.12.0

将此添加到您的 dev_dependencies

之前

此问题的出现是由于 GestureRecognizer 清理 - Here is the documentation if you are intrested in the migration code

但是如果你只是想构建你的 flutter 应用程序而不需要任何迁移,下面是解决该问题的几个方法

  1. 您可以将 pubspec.yaml 文件中的 photo_view 依赖项更新为
    photo_view :^0.12.0
  2. 如果您出于任何原因不想更新您的依赖项,您可以选择此临时修复程序。在 pubspec.yaml 文件中添加以下自定义 photo_view,在 dependency_overrides.
  3. 中具有更好的手势识别

dependency_overrides:

   photo_view:
     git: git://github.com/robertodoering/photo_view.git

添加最新版本的flutter_colorpicker依赖

来自您的调试代码 ('../plugins/flutter/packages/flutter/lib/src/gestures/events.dart')。 如果有link个可点击

,你打开文件或点击

搜索这个:

void addAllowedPointer(PointerEvent event) {

并替换为:

void addAllowedPointer(PointerDownEvent event) {

这里是参考link

https://flutter.dev/docs/release/breaking-changes/gesture-recognizer-add-allowed-pointer