Flutter插件调用了无法识别的选择器

问题描述 投票:1回答:1

我有一个具有演示Flutter应用程序的功能齐全的Flutter平台插件。 Flutter应用很高兴通过渠道与本机代码对话并获得响应。现在,我还需要该应用程序在后台运行。遵循各种指南,我发现我需要在插件上调用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应用程序可以正常工作。

ios swift flutter appdelegate
1个回答
0
投票

我将把它添加为答案,因为OP没有跟进我的评论。

当您使用flutter create --template=plugin my_plugin创建Flutter插件“ MyPlugin”时,以[默认] iOS语言为Swift,将创建两个类:MyPluginSwiftMyPlugin。您很可能会在SwiftMyPlugin中实现您的插件。但是MyPlugin类扩展了NSObject<FlutterPlugin>,该类确实包含setPluginRegistrantCallback方法,因此,调用MyPlugin.setPluginRegistrantCallback不是编译错误,但是您几乎可以肯定要调用SwiftMyPlugin.setPluginRegistrantCallback

© www.soinside.com 2019 - 2024. All rights reserved.