未处理的异常:PlatformException(通道错误,无法在通道上建立连接。,null,null)

MsP*_*tha 58 dart flutter

突然这个错误出现在调试控制台中。我不知道我做错了什么。

错误图像

Ari*_* H. 70

您已经升级了 Flutter,但没有升级软件包。在终端中输入

flutter pub outdated

然后将过时的软件包一一升级,如下所示:

flutter pub upgrade outdated_package

完成后:

flutter clean

和

flutter pub get

您的问题现在应该已经解决了。

  • 没有工作。颤振版本:3.0.5 飞镖:2.17.6 (3认同)

Jon*_*lis 9

我花了很长时间研究这个问题,最终追溯到nil设置插件时的插件注册器。

FlutterViewController这是由于将我的 iOS 应用程序根视图控制器设置为除(即在我的情况下,我将 a UINavigationController作为根)以外的任何内容引起的。这将导致无法注册所有插件。

应用程序委托假定根视图控制器是 a FlutterViewController,因此如果不是,那么您将需要通过覆盖FlutterViewController这些函数来将所有与插件相关的函数调用从应用程序委托重新定向到您的应用程序委托,如下所示:

    override func registrar(forPlugin pluginKey: String) -> FlutterPluginRegistrar? {
        flutterViewController.registrar(forPlugin: pluginKey)
    }

    override func hasPlugin(_ pluginKey: String) -> Bool {
        flutterViewController.hasPlugin(pluginKey)
    }

    override func valuePublished(byPlugin pluginKey: String) -> NSObject? {
        flutterViewController.valuePublished(byPlugin: pluginKey)
    }
Run Code Online (Sandbox Code Playgroud)

  • 这个答案确实需要更多的赞成票。错误正是因为这个原因发生的。有时,插件注册器文件只是过时(或丢失),其他答案中的命令可以修复它们,但在某些情况下,您可能会错误地设置“FlutterViewController” - 特别是在没有 FlutterAppDelegate 的情况下。所以这个答案给了你正确的方向。帮了我很多@jonathan,谢谢! (2认同)

小智 5

我遇到了同样的问题并被这篇文章难住了。

就我而言,我能够检测到哪个插件实际上给出了错误,结果是firebase_core. 因此,我决定将软件包升级到最新版本,这恰好是1.21.1我的情况。

因此,为了解决这个问题,我建议您尝试将您正在使用的包的版本更改为项目的pubspec.yamlfirebase_core文件中的最新版本,如下所示:

firebase_core: ^1.21.1 (replace with latest verison)
Run Code Online (Sandbox Code Playgroud)

或者你可以运行:

flutter pub upgrade firebase_core
Run Code Online (Sandbox Code Playgroud)

这将升级firebase_core到最新版本。

或者您也可以将任何版本代码放入项目的pubspec.yaml文件中,如下所示:

firebase_core: any (upgrades firebase_core to the latest verison)
Run Code Online (Sandbox Code Playgroud)