类'BasicMessageChannel<dynamic>'中未定义方法'setMockMessageHandler'。

26

运行Flutter项目后,我遇到了这个错误。有什么方法可以解决它吗?

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

FAILURE: Build failed with an exception.
6个回答

41

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

flutter pub upgrade

对我来说毫无作用,但是

flutter clean
flutter pub upgrade --major-versions

已解决问题


3
我不想更新所有的依赖项。我如何确定需要升级的特定依赖关系? - LOLWTFasdasd asdad
救命稻草!谢谢 :D - Chris
这在我的Mac上没有起作用。有针对Mac的特定步骤吗? - Ajay
flutter pub upgrade --major-versions 这对我来说很好用。 - Mostafijur Rahman

4
  1. 按住ctrl并单击,进入指定的 'BasicMessageChannel' 类
  2. 然后使用ctrl + F搜索 'setMockMessageHandler' 然后您将看到类似于以下内容: // 寻找 setMockMessageHandler? // 请参阅此 shim 包:packages/flutter_test/lib/src/deprecated.dart 将以下行粘贴到此注释下方 void setMockMessageHandler(dynamic message){

但这只是一种简单的 hack,不建议这样做。


遗留代码需要一些热修复时,最好的做法是什么? - Rodrigo

4

在升级到Flutter 2.5.3(从2.2.3)之后遇到了这个问题。如发布说明所述,更改破坏了几百个测试,因为大多数测试在全局setUp()中设置了模拟方法处理程序。

如发布说明所示,我替换了类似以下代码的代码:

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

使用默认实例TestDefaultBinaryMessenger的代码:
 TestDefaultBinaryMessengerBinding.instance.defaultBinaryMessenger
   .setMockMethodCallHandler(MethodChannel('channelName'), (MethodCall methodCall) {});

这个改变让我能够保持所有测试不变。

2

我有同样的问题,尝试了以上所有方法都没有帮助。 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


1
那么,解决方案是什么? - Zeeshan Ahmad
我有同样的问题,只是解释了我做了什么,但还是不起作用。 - Hosam Eisa

2

我今天遇到了同样的问题。

据我所知,这基本上是由于平台通道测试接口转换为flutter_test包而引起的破坏性变化。

在我的情况下,只需在全局终端会话中运行flutter pub upgrade即可解决问题。

有关所提到的转换的更多详细信息,请参见相关发布说明


0

enter image description here

1

  1. flutter pub upgrade
  2. flutter clean
  3. flutter pub upgrade --major-versions
  4. cd ios
  5. pod repo update
  6. pod update
  7. open Runner.xcworkspace
  8. make clean & make run
注:这是关于编程的内容。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接