参数类型“PointerEvent”不能分配给参数类型“PointerDownEvent”

Posted

技术标签:

【中文标题】参数类型“PointerEvent”不能分配给参数类型“PointerDownEvent”【英文标题】:The argument type 'PointerEvent' can't be assigned to the parameter type 'PointerDownEvent' 【发布时间】:2021-11-07 05:39:57 【问题描述】:

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

猜猜这一定和android studio有关。我尝试降级到较早的 android studio 版本,但问题仍然存在。

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

编辑:如果我将颤振从 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);

【问题讨论】:

【参考方案1】:

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之前添加这个

【讨论】:

我的 pubspec.yaml 中没有 photo_view 我也面临同样的问题,但我的问题是 html_editor_enhanced,其中包含此 flutter_colorpicker 作为依赖项,那么我该怎么办 @AbhishekVishwakarma,同样的 dependency_overrides: flutter_colorpicker: ^versionWhichUsesNewAPI。您可以尝试 pub.dev 中的最新版本或查看其更新日志 @croxx5f 我的 pubspec 是最新的,所以我如何检查它的更新日志并修复 @AbhishekVishwakarma 在 pub.dev 的包页面中。如果你在那里找不到信息,那么在 Github 中。如果在那之后您似乎没有解决您的问题,我会鼓励您提出一个新问题【参考方案2】:

来自您的调试代码 ('../plugins/flutter/packages/flutter/lib/src/gestures/events.dart')。 如果有可点击的链接,您打开文件或点击

搜索这个:

void addAllowedPointer(PointerEvent event) 

并替换为:

void addAllowedPointer(PointerDownEvent event) 

这里是参考链接

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

【讨论】:

正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center。【参考方案3】:

这个问题是由于GestureRecognizer Cleanup - Here is the documentation if you are intrested in the migration code

但如果您只想构建您的 Flutter 应用而不进行任何迁移,以下是该问题的几个解决方案

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

dependency_overrides:

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

【讨论】:

【参考方案4】:

添加最新版本的flutter_colorpicker依赖

【讨论】:

正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center。

以上是关于参数类型“PointerEvent”不能分配给参数类型“PointerDownEvent”的主要内容,如果未能解决你的问题,请参考以下文章

获取错误“未知”类型的参数不能分配给“错误”类型的参数 |空值'

参数类型“对象?”不能分配给参数类型'String'最新版本

参数类型“Type”不能分配给参数类型“FirebaseUser”

参数类型“字符串”不能分配给参数类型“目录”

参数类型“字符串”不能分配给参数类型“对象?函数(对象?,对象?)?

错误:参数类型“上下文”不能分配给参数类型“BuildContext”