参数类型“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”