未处理的异常:MissingPluginException(未找到对通道 plugins.flutter.io/connectivity 进行方法检查的实现)

Posted

技术标签:

【中文标题】未处理的异常:MissingPluginException(未找到对通道 plugins.flutter.io/connectivity 进行方法检查的实现)【英文标题】:Unhandled Exception: MissingPluginException(No implementation found for method check on channel plugins.flutter.io/connectivity) 【发布时间】:2020-05-22 01:05:26 【问题描述】:

我已经在我的pubspec.yaml 上添加了连接插件。

connectivity: ^0.4.6

但仍然出现此错误:

E/flutter ( 4789): [ERROR:flutter/lib/ui/ui_dart_state.cc(148)] Unhandled Exception: MissingPluginException(No implementation found for method check on channel plugins.flutter.io/connectivity)
E/flutter ( 4789): #0 MethodChannel.invokeMethod (package:flutter/src/services/platform_channel.dart:314:7)
E/flutter ( 4789):
E/flutter ( 4789): #1 Connectivity.checkConnectivity (package:connectivity/connectivity.dart:73:47)

错误连接来自这一行:

  Future<ConnectivityResult> checkConnectivity() async 
    final String result = await methodChannel.invokeMethod<String>('check');
    return _parseConnectivityResult(result);
  

我从来没有修改过这个包,但是无论我使用什么版本的这个插件,仍然会出现这个错误。我希望任何人都可以帮助我解决这个错误,谢谢。对不起我的英语不好。

【问题讨论】:

您是在 androidios 还是 Web 上使用它?你试过flutter clean吗? 你在Android代码中实现了check方法吗? @mFeinstein 我在 android anf iOS 中都使用它,我尝试了 flutter clean,也删除了包并再次添加它,但还是一样, 我猜也是热重启? @Xihuny 我不知道,我想我不会那样做,我不知道如何在 android 中实现该代码 【参考方案1】:

Flutter clean 在终端上,停止构建并再次运行对我有用

【讨论】:

【参考方案2】:

这个问题可以通过手动编辑并在你的 android GeneratedPluginRegistrant 上添加一行来解决,如下所示:

import io.flutter.plugins.connectivity.ConnectivityPlugin;

ConnectivityPlugin.registerWith(registry.registrarFor("io.flutter.plugins.connectivity.ConnectivityPlugin"));

【讨论】:

再次运行应用程序后,它会再次生成整个文件,对不起,但它没有帮助完整【参考方案3】:

此错误主要发生在您尝试Hot ReloadHot Restart 刚刚将新包添加到您的pubspec.yaml 之后。

只需停止正在运行的项目(应用程序),然后重新运行它。这样添加的包(包含实现)也推送到设备

【讨论】:

我已经这样做了,即使我卸载了 apk 并再次运行,但仍然得到同样的错误 @Crazy Lazy Cat 谢谢,做到了。【参考方案4】:

跟随与上述任务无关,但最终结果相同。 我在连接插件和 IOS 配置方面遇到了麻烦。所以我使用以下方法来检查我的应用是否连接到互联网:

static Future<bool> checkInternetConnectivity() async 
    bool isConnected;
    try 
      final result = await InternetAddress.lookup('google.com');
      if (result.isNotEmpty && result[0].rawAddress.isNotEmpty) 
        isConnected = true;
      
     on SocketException catch (_) 
      isConnected = false;
    
    return isConnected;
  
AppUtil.checkInternetConnectivity().then((isOnline) async 
      if (isOnline) ... else ...
)

我从未见过谷歌网站出现故障。如果我想听互联网连接,我会使用计时器。

如果您想检查移动数据连接或 wifi 数据连接,对不起!您仍然需要继续实现连接。

【讨论】:

实际上,我想检测网络变化,因为我不知道如何在网络未连接或不可用时显示错误,并且在网络可用和连接时请求获取 api,以防互联网连接突然失去了

以上是关于未处理的异常:MissingPluginException(未找到对通道 plugins.flutter.io/connectivity 进行方法检查的实现)的主要内容,如果未能解决你的问题,请参考以下文章

SQL 异常未处理 - System.Data.dll 中出现“System.Data.SqlClient.SqlException”类型的未处理异常

如何生成未处理的 MFC 异常?

Elasticsearch未分配分片异常处理

在 mvc 中处理请求时发生未处理的异常

捕获未处理的异常

如何在未处理的任务异常上崩溃?