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

Flutter使用flutter_share_me包iOS编译报ShareDialog init不可用如何解决

错误原因

这个报错是因为FBSDKShareKit v13.0及以上版本官方明确移除了ShareDialog的无参数init()构造方法,要求必须使用带fromViewController、content、delegate参数的构造方法初始化实例。flutter_share_me 1.2.0版本的iOS原生代码中存在多余的无参ShareDialog()初始化调用,且对应的mode属性设置也没有作用到实际使用的实例上,因此触发编译错误。

可行解决方案
  • 方案1:修改本地原生代码(最快临时修复)
    找到Xcode项目中Pods目录下的flutter_share_me库对应的SwiftFlutterShareMePlugin.swift文件,将sharefacebook方法修改为如下内容即可:
func sharefacebook(message:Dictionary<String,Any>, result: @escaping FlutterResult)  {
    let viewController = UIApplication.shared.delegate?.window??.rootViewController
    let shareContent = ShareLinkContent()
    shareContent.contentURL = URL.init(string: message["url"] as! String)!
    shareContent.quote = message["msg"] as? String
    let shareDialog = ShareDialog(fromViewController: viewController, content: shareContent, delegate: self)
    shareDialog.mode = .automatic
    shareDialog.show()
    result("Success")
}

本质是删除无用的无参构造调用,将mode属性设置到实际用于展示的ShareDialog实例上。

  • 方案2:锁定FBSDKShareKit兼容版本
    不修改第三方库代码的前提下,在iOS项目的ios/Podfile文件的Runner目标块中添加版本锁定配置:
target 'Runner' do
  # 已有其他配置保持不变,新增下面这行
  pod 'FBSDKShareKit', '~> 12.3.0'
end

配置完成后在ios目录下执行pod install --repo-update重新安装依赖即可,12.x版本的FBSDKShareKit仍支持无参构造方法。

  • 方案3:升级flutter_share_me到最新版本
    该问题已在flutter_share_me的后续版本中修复,直接将pubspec.yaml中的依赖升级到最新稳定版即可:
dependencies:
  flutter_share_me: ^1.4.0

修改后执行flutter pub get重新拉取依赖,再重新编译iOS项目即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 21:45:05