向Flutter原生iOS插件添加额外Swift文件时报错无法在作用域找到对应类
Flutter iOS插件"cannot find 'MediaPickerController' in scope" 报错解决方案
检查文件Target Membership配置
新添加的MediaPickerController.swift默认只会勾选Runner主工程的编译目标,不会自动加入插件的编译目标。选中该文件后在Xcode右侧「文件检查器」面板的Target Membership区域,勾选你的Flutter iOS插件对应的target,确保文件被编译到插件模块中。调整类的访问控制权限
独立Swift项目中默认的internal访问权限允许同模块跨文件访问,但Flutter插件是独立的模块,如果你没有显式给MediaPickerController类标注公开访问权限,同插件内的其他文件也可能无法识别该类。修改类及初始化方法的访问修饰符:
// 追加public访问修饰符 public class MediaPickerController: UIViewController { // 初始化方法也需要追加public修饰符 public init(mediaType: MediaType, limit: Int) { // 原有初始化逻辑 } }
- 清理Xcode缓存重编译
Xcode的增量编译缓存经常会导致新增文件识别异常,按以下步骤清理缓存后重新编译即可:
- 按快捷键
Command + Shift + K清理当前项目的构建产物 - 执行
rm -rf ~/Library/Developer/Xcode/DerivedData删除全局编译缓存 - 回到Flutter项目根目录执行
flutter clean && flutter pub get,重新打开iOS工程编译
内容的提问来源于stack exchange,提问作者zernzern1993
相关产品推荐
相关产品推荐

