You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter注册多个iOS原生视图报错:重复插件键<ceal-views>

问题原因分析

错误Duplicate plugin key: <ceal-views>的核心原因有两点:

  1. 插件名不一致:你在获取registrar时,第一次用的是"ceal-views",但后面两次注册视图工厂时用的是"<ceal-views>"(带多余尖括号),导致系统误判为重复注册同一插件键。
  2. 重复获取registrar实例:多次调用self.registrar(forPlugin:)会触发插件注册逻辑重复执行,进而引发键冲突。
修复方案

统一插件名,复用同一个registrar实例完成两个视图工厂的注册,修改后的代码如下:

GeneratedPluginRegistrant.register(with: self)

// 安全获取registrar实例,避免强制解包崩溃
guard let registrar = self.registrar(forPlugin: "ceal-views") else {
    fatalError("无法获取ceal-views插件的registrar实例")
}

// 注册第一个视图工厂
let cealQrViewFactory = CealQrViewNativeViewFactory(messenger: registrar.messenger())
registrar.register(cealQrViewFactory, withId: "cealQrView")

// 注册第二个视图工厂
let cealScanViewFactory = CealScanViewNativeViewFactory(messenger: registrar.messenger())
registrar.register(cealScanViewFactory, withId: "cealScanQrView")
关键说明
  • 确保插件名完全统一,不要添加多余的尖括号或其他符号,保持与插件注册时的名称一致。
  • 只获取一次registrar并复用,避免重复触发插件注册流程,从根源上解决重复键的问题。
  • 使用guard let替代强制解包!,提升代码安全性,避免因registrar获取失败导致的崩溃。

内容的提问来源于stack exchange,提问作者BraveEvidence

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 13:35:21