方法 'setMockMessageHandler' 没有为 class 'BasicMessageChannel<dynamic>' 定义
The method 'setMockMessageHandler' isn't defined for the class 'BasicMessageChannel<dynamic>'
在运行 Flutter 项目后,我得到这个错误。我能做些什么来解决它?
Error: The method 'setMockMessageHandler'
isn't defined for the class 'BasicMessageChannel<dynamic>'.
FAILURE: Build failed with an exception.
我今天遇到了同样的问题。
据我所知,这基本上是由于平台通道测试接口过渡到 flutter_test 包而引起的重大变化。
就我而言,问题仅在全局终端会话中 运行 flutter pub upgrade
得到解决。
上查看有关上述转换的更多详细信息
我在 Mac
上更新 Android Studio 中的插件后遇到了同样的问题
flutter pub upgrade
对我没有任何帮助,但是
flutter clean
flutter pub upgrade --major-versions
已解决问题
我也遇到了同样的问题,以上方法都试过了,都没有用。
flutter pub upgrade
和 flutter 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.
- 转到指定的 class 'BasicMessageChannel' 按住 ctrl 并单击它
- 而不是通过 ctrl+F 搜索 'setMockMessageHandler'
比你会看到这样的东西
// 寻找 setMockMessageHandler?
// 查看这个 shim 包:packages/flutter_test/lib/src/deprecated.dart
并将此行粘贴到此评论下方
void setMockMessageHandler(动态消息){
}
但这只是不推荐的简单 hack
运行 升级到 Flutter 2.5.3(从 2.2.3)后遇到这个问题。 release notes 中概述的更改破坏了数百个测试,因为模拟方法处理程序是在全局 setUp()
中为大多数测试设置的。
如发行说明中所示,我将代码替换为
MethodChannel('channelName')
.setMockMethodCallHandler((MethodCall methodCall) {});
代码使用 TestDefaultBinaryMessenger
的默认实例:
TestDefaultBinaryMessengerBinding.instance.defaultBinaryMessenger
.setMockMethodCallHandler(MethodChannel('channelName'), (MethodCall methodCall) {});
此更改允许我保持所有测试不变。
在运行 Flutter 项目后,我得到这个错误。我能做些什么来解决它?
Error: The method 'setMockMessageHandler'
isn't defined for the class 'BasicMessageChannel<dynamic>'.
FAILURE: Build failed with an exception.
我今天遇到了同样的问题。
据我所知,这基本上是由于平台通道测试接口过渡到 flutter_test 包而引起的重大变化。
就我而言,问题仅在全局终端会话中 运行 flutter pub upgrade
得到解决。
我在 Mac
上更新 Android Studio 中的插件后遇到了同样的问题flutter pub upgrade
对我没有任何帮助,但是
flutter clean
flutter pub upgrade --major-versions
已解决问题
我也遇到了同样的问题,以上方法都试过了,都没有用。
flutter pub upgrade
和 flutter 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.
- 转到指定的 class 'BasicMessageChannel' 按住 ctrl 并单击它
- 而不是通过 ctrl+F 搜索 'setMockMessageHandler' 比你会看到这样的东西 // 寻找 setMockMessageHandler? // 查看这个 shim 包:packages/flutter_test/lib/src/deprecated.dart 并将此行粘贴到此评论下方 void setMockMessageHandler(动态消息){
} 但这只是不推荐的简单 hack
运行 升级到 Flutter 2.5.3(从 2.2.3)后遇到这个问题。 release notes 中概述的更改破坏了数百个测试,因为模拟方法处理程序是在全局 setUp()
中为大多数测试设置的。
如发行说明中所示,我将代码替换为
MethodChannel('channelName')
.setMockMethodCallHandler((MethodCall methodCall) {});
代码使用 TestDefaultBinaryMessenger
的默认实例:
TestDefaultBinaryMessengerBinding.instance.defaultBinaryMessenger
.setMockMethodCallHandler(MethodChannel('channelName'), (MethodCall methodCall) {});
此更改允许我保持所有测试不变。