未处理的异常:MissingPluginException:未在通道上找到方法 xx 的实现

Unhandled Exception: MissingPluginException: No implementation found for method xx on channel

我遇到一个错误,我在某个日期后实现的所有插件都将无法运行。我尝试了互联网上的所有方法(重新安装、flutter clean、重建...),但 none 都有效,所以也许我处在一个非常奇怪的情况下。

这是我的 yaml 文件:

dependencies:
  flutter:
    sdk: flutter
  http :
  intl:
  cupertino_icons: ^1.0.3
  flutter_svg: ^0.23.0+1
  pin_code_fields: ^7.3.0
  flutter_secure_storage: ^4.2.1
  iban: ^1.0.1
  sqflite: ^2.0.0+4
  path: ^1.6.4
  webview_flutter : ^2.3.0
  qr_flutter: ^4.0.0 #qrcode generation
  qrcode_flutter: ^2.0.1
  url_launcher: ^6.0.12 #launching url
  uuid: ^3.0.5
  encrypt: ^5.0.1
  simple_rsa: ^0.0.5
  crypto: ^3.0.1
  crypto_keys: ^0.3.0
  dio: ^4.0.1
  pointycastle: ^3.3.4
//from here, bottom plugins don't work
  screenshot: ^1.2.3 
  image_gallery_saver: ^1.7.1
  permission_handler: ^8.2.6
  email_validator: ^2.0.1  //surprisingly email_validator works
  share_plus: ^3.0.4

扑博士:

[✓] Flutter (Channel master, 2.6.0-12.0.pre.837, on macOS 12.0.1 21A559 darwin-x64, locale zh-Hans-FR)
    • Flutter version 2.6.0-12.0.pre.837 at /Users/liuqishu/Development/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 341e771b12 (5 days ago), 2021-11-24 19:33:04 -0500
    • Engine revision e99aba6a38
    • Dart version 2.16.0 (build 2.16.0-46.0.dev)
    • DevTools version 2.8.0

[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
    • Android SDK at /Users/liuqishu/Library/Android/sdk
    • Platform android-30, build-tools 30.0.3
    • Java binary at: /Applications/Android Studio 4.2
      Preview.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 11.0.8+10-b944.6916264)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 13.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • CocoaPods version 1.11.2

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio
    • Android Studio at /Applications/Android Studio 4.2 Preview.app/Contents
    • Flutter plugin can be installed from:
       https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
       https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.8+10-b944.6916264)

[✓] VS Code (version 1.62.3)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.28.0

[✓] Connected device (3 available)
    • Qishu’s iPhone (mobile) • 00008101-0011358401E2001E            • ios            • iOS 15.1.1
      19B81
    • iPhone 13 (mobile)      • 56F3E614-0B41-4F96-B7B5-FEE3D5E63006 • ios            •
      com.apple.CoreSimulator.SimRuntime.iOS-15-0 (simulator)
    • Chrome (web)            • chrome                               • web-javascript • Google Chrome
      96.0.4664.55

• No issues found!

错误日志:(以插件share为例,其实我现在实现的任何插件都会报同样的错误)

[VERBOSE-2:ui_dart_state.cc(209)] Unhandled Exception: MissingPluginException(No implementation found for method share on channel dev.fluttercommunity.plus/share)
#0      MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:175:7)
<asynchronous suspension>

我们将不胜感激所有建议。

好吧,我终于想通了这个问题,我不确定我是否处于非常特殊的情况下,但无论如何这是解决方案: 每次我构建应用程序时,即使插件会正确安装,但插件的路径在 GeneratedPluginRegistrant.m 中没有正确导入。所以手动导入后就可以了!

ps:插件路径:/your_project_folder/ios/Pods/Target Support Files

如何在 GeneratedPluginRegistrant.m 中手动添加插件的示例:

#if __has_include(<qrcode/QrcodePlugin.h>)
#import <qrcode/QrcodePlugin.h>
#else
@import qrcode_flutter;
#endif

也将其添加到此文件的底部,在 resgistry 方法中:

[QrcodeFlutterPlugin registerWithRegistrar:[registry registrarForPlugin:@"QrcodeFlutterPlugin"]];