当前位置: 首页 > 知识库问答 >
问题:

在Flatter插件上调用了无法识别的选择器

丁阳炎
2023-03-14

我有一个完整的工作颤振平台插件和一个演示颤振应用程序。Flatter应用程序正在通过各种渠道与本机代码愉快地交谈,并获得响应。现在我需要该应用程序在后台工作。按照各种指南,我发现我需要在我的插件上调用setPluginRegistrantCallback。但如果我这么做,应用程序就会崩溃:

***由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“[MyPlugin setPluginRegistrantCallback:]:未识别的选择器发送到类0x104ed5668”

我的代码:

@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate {
  override func application(
    _ application: UIApplication,
    didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
  ) -> Bool {
    UIApplication.shared.setMinimumBackgroundFetchInterval(UIApplication.backgroundFetchIntervalMinimum)

    GeneratedPluginRegistrant.register(with: self)
    MyPlugin.setPluginRegistrantCallback({ registry in
        if (!registry.hasPlugin("MyPlugin")) {
            MyPlugin.register(with: registry.registrar(forPlugin: "MyPlugin"))
        }

        GeneratedPluginRegistrant.register(with: registry)
    })
    return super.application(application, didFinishLaunchingWithOptions: launchOptions)
  }
}

有什么想法我错过了什么?否则插件和Runner应用程序运行良好。

共有1个答案

章稳
2023-03-14

由于OP没有跟进我的评论,我将添加此作为答案。

当您使用flutter create--模板=pluginmy_plugin创建Flutter插件“MyPlugin”时,使用[默认]iOS语言作为Swift,会创建两个类:MyPluginSwiftMyPlugin。您很可能会在SwiftMyPlugin中实现您的插件。然而,MyPlugin类扩展了NSObject

 类似资料:
  • 问题内容: 我通过清单中的“导出向导”导出了我的eclipse插件,似乎一切进行得很好(没有错误)。它在zip文件的插件目录中创建了一个.jar文件。 我以为将jar放入我的Eclipse插件目录中将进行安装(在重新启动eclipse之后),但这没有用。Eclipse看不到插件(透视图未显示) 我尝试使用“帮助”->“安装新软件”->“本地存档”,但始终显示“找不到软件” 您能帮我准备好将插件安装

  • 在我的应用程序中,我将数据导出到JSON。但是,当我尝试导入JSON文件时,它会抛出一个错误,如下所示: E/flatter:[错误:flatter/shell/common/shell.cc(184)]省道错误:未处理的异常:NoSuchMethodError:对null调用了方法“[]”。接收方:null尝试调用:#0对象。noSuchMethod(dart:core/runtime/libo

  • 因此,我正在使用一个跨平台引导程序,它在OSX/Linux上正常工作,但在Windows中返回以下错误消息: 错误:无法创建Java虚拟机。错误:发生致命异常。程序将退出。无法识别的选项:-cp c:/myapp/realm/bin/launcher.jar;c:/myapp/_jvm/jre/../lib/Tools.jar;c:/myapp/realm/shared/lib/jettyutil

  • 问题内容: 我在Windows 2012服务器上使用PowerShell,我从System32删除了所有Java命令,重新安装了jdk,将JAVA_HOME和Path设置为指向新安装。而且我仍然收到以下错误: 问题答案: 我从System32删除了所有Java命令 这就是Windows无法找到java.exe的原因。默认的JRE安装将Java放入System32目录,而CMD和Powershell

  • 我有一个非常简单的超文本标记语言文件,其中有一个按钮。当单击此按钮时,函数loadDoc()在javascript文件(ajax.js)中运行。带有IDajax_text的div被更改为“单击”。到目前为止还不错。 现在,我试图对一个php文档进行ajax调用。php文档应该响应“Hello World!”。我试图通过使用警报(alert(msg))来显示此消息。php文档与我的HTML文档位于同

  • 问题内容: 我得到我的iOS应用程序错误。我尝试根据其他类似主题中提到的答案解决问题,但失败了。请查看下面的代码,并为此提供帮助。 谢谢 问题答案: 这样写选择器。 Swift 2.3或更低版本。 迅捷3 注意: 一种建议是面糊方法名称始终以小写而不是大写开头。因此,如果您使用而不是,那就更糟了。