升级到Flutter 2.5后无法为设备构建预编译应用问题求助
问题根因
本次构建失败是你项目依赖的mongol 2.2.0版本未适配Flutter 2.5的系统接口变更导致:Flutter 2.5对TextSelectionControls类的buildHandle、getHandleAnchor两个方法新增了3个可选位置参数,旧版本mongol包中重写这两个方法的参数数量和父类不匹配,直接触发编译错误。附带的iOS部署版本警告不属于本次构建失败的直接原因。
解决方案
方案1:升级mongol依赖(优先推荐)
修改项目pubspec.yaml文件中的mongol版本约束,升级到已适配Flutter 2.5的版本:dependencies: mongol: ^3.0.0该版本已官方修复了Flutter 2.5的接口兼容问题,无需其他修改。
方案2:临时兼容(无法升级依赖时使用)
在项目内新建自定义文本选择控件类,继承原MongolTextSelectionControls,补全参数重写两个报错方法即可:import 'package:mongol/mongol.dart'; class FixedMongolTextSelectionControls extends MongolTextSelectionControls { @override Widget buildHandle(BuildContext context, TextSelectionHandleType type, double textLineHeight, [VoidCallback? onTap, double? startGlyphHeight, double? endGlyphHeight]) { return super.buildHandle(context, type, textLineHeight, onTap); } @override Offset getHandleAnchor(TextSelectionHandleType type, double textLineHeight, [double? startGlyphHeight, double? endGlyphHeight]) { return super.getHandleAnchor(type, textLineHeight); } }后续项目中使用该
FixedMongolTextSelectionControls替换原类即可。方案3:修复iOS部署版本警告
打开项目ios目录下的Podfile,在末尾添加以下配置,统一所有Pod的最低部署版本为9.0:post_install do |installer| installer.pods_project.targets.each do |target| target.build_configurations.each do |config| config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '9.0' end end end
验证操作步骤
- 执行
flutter clean清理本地构建缓存 - 执行
flutter pub get拉取更新后的依赖包 - 进入ios目录执行
pod install更新iOS依赖 - 重新执行
flutter run启动应用即可
内容的提问来源于stack exchange,提问作者LiDe
相关产品推荐
相关产品推荐

