集成macos_ui包后编译报错:NSToolbar/BlockingToolbar无allowsDisplayModeCustomization成员
集成macos_ui包后编译报错:NSToolbar/BlockingToolbar无allowsDisplayModeCustomization成员
遇到这个问题我太懂了!之前用macos_ui的时候也踩过这个坑,给你梳理一下原因和解决办法:
问题原因
这个报错的核心是API版本不兼容:allowsDisplayModeCustomization是macOS 14.0(Sonoma)才新增的NSToolbar属性,但你的项目设置的最低部署目标是10.14.6,而且你的系统是Ventura 13.7.5(本身不支持这个API)。而你用到的macos_window_utils 1.7.1版本(macos_ui依赖的包)里直接调用了这个高版本API,导致编译时找不到该成员。
解决方案
这里给你两个可行的解决方向:
1. 降级macos_window_utils到兼容低版本系统的版本
通过依赖覆盖,强制让macos_ui使用不包含该高版本API的macos_window_utils版本。具体步骤:
- 打开项目根目录的
pubspec.yaml,在文件末尾添加:dependency_overrides: macos_window_utils: ^1.6.0 - 执行命令更新依赖:
flutter pub get - 然后重新执行编译:
flutter run -d macos,一般就能解决这个报错了。
2. 升级系统和项目部署目标(不推荐给不想升级系统的同学)
如果愿意升级你的macOS系统到Sonoma(14.0及以上),同时修改项目的最低部署目标:
- 升级你的macOS到14.0+
- 打开项目的
macos/Podfile,把部署目标改成platform :osx, '14.0' - 执行
flutter clean,然后cd macos && pod install,再重新编译项目
关于那个Run Script警告
顺便说一下你看到的Run Script警告,这个不影响编译成功,只是Xcode的提示:
- 打开Xcode的Runner项目,找到"Build Phases"里的"Run Script"阶段
- 要么添加输出文件路径(比如随便填一个临时路径),要么取消勾选"Based on dependency analysis"选项,就能消除这个警告了。
内容来源于stack exchange
相关产品推荐
相关产品推荐

