dart 未为类“BasicMessageChannel”定义方法“setMockMessageHandler< dynamic>”

hjzp0vay  于 2023-05-20  发布在  其他
关注(0)|答案(6)|浏览(125)

在运行Flutter项目后,我得到了这个错误。我能做些什么来解决它?

Error: The method 'setMockMessageHandler' 
isn't defined for the class 'BasicMessageChannel<dynamic>'.

FAILURE: Build failed with an exception.
8zzbczxx

8zzbczxx1#

我在Mac上的AndroidStudio中更新插件后遇到了同样的问题

flutter pub upgrade

对我没什么帮助但是

flutter clean
flutter pub upgrade --major-versions

已经解决了这个问题

y0u0uwnf

y0u0uwnf2#

1.通过按住ctrl并单击它转到指定的类'BasicMessageChannel'

  1. than搜索'setMockMessageHandler' by ctrl+F than u will see something like this //寻找setMockMessageHandler?//看这个shim包:packages/flutter_test/lib/src/deprecated.dart并将此行粘贴到此注解下面void setMockMessageHandler(dynamic message){
    但这只是一个简单的黑客这是不建议
7z5jn7bk

7z5jn7bk3#

我今天也遇到了同样的问题。
从我所能注意到的,这基本上是一个突破性的变化所造成的过渡平台通道测试接口到flutter_test包。
在我的例子中,这个问题在一个全局终端会话上运行flutter pub upgrade就解决了。
referred release notes上查看有关上述转换的更多详细信息

imzjd6km

imzjd6km4#

我也有同样的问题,我已经尝试了以上所有的方法,都没有帮助。flutter pub upgradeflutter pub upgrade --major-versions输出如下:
未更改依赖项。
1包已停产。
76个软件包的新版本与依赖约束不兼容。
请尝试flutter pub outdated以获取更多信息。
pubspec.yaml没有变化!插件advance_pdf_viewer, flutter_absolute_path, geocoder, google_api_headers, onesignal_flutter使用Android嵌入的弃用版本。为了避免意外的运行时失败或未来的构建失败,请尝试查看这些插件是否支持Android V2嵌入。否则,请考虑删除它们,因为Flutter的未来版本将删除这些已弃用的API。如果您是插件作者,请查看将插件迁移到V2嵌入的文档:https://flutter.dev/go/android-plugin-migration

avwztpqn

avwztpqn5#

升级到Flutter 2.5.3(从2.2.3)后遇到此问题。release notes中概述的更改破坏了数百个测试,因为大多数测试都在全局setUp()中设置了mock方法处理程序。
如发行说明中所示,我替换了如下代码

MethodChannel('channelName')
   .setMockMethodCallHandler((MethodCall methodCall) {});

下面的代码使用TestDefaultBinaryMessenger的默认示例:

TestDefaultBinaryMessengerBinding.instance.defaultBinaryMessenger
   .setMockMethodCallHandler(MethodChannel('channelName'), (MethodCall methodCall) {});

这一变化使我能够保持所有测试不变。

72qzrwbm

72qzrwbm6#

1
1.:flutter pub升级
1.: Flutter 清洁
1.:flutter pub升级--major-versions
1.:cd ios
1.:Pod存储库更新
1.:Pod更新
1.:打开Runner.xcworkspace
1.:make clean & make run

相关问题