执行flutter run失败,Gradle返回退出码1及依赖兼容错误
解决Flutter运行时Gradle构建错误及包兼容问题
问题根源
你遇到的错误是因为preload_page_view 0.1.6和fluro 2.0.3版本过旧,与当前Flutter SDK的API更新不兼容:
- preload_page_view未适配ScrollMetrics中新增的
devicePixelRatio参数 - fluro 2.0.3调用了RouteSettings已移除/未实现的
copyWith方法 - 附加的StackOverflowError是Gradle内存不足导致
具体修复步骤
1. 替换/升级过时依赖包
处理preload_page_view
该包已多年未维护,建议直接替换为官方或活跃维护的方案:
- 如果是实现页面预加载:使用官方
PageView配合PageController,通过keepPage属性或手动缓存页面状态 - 如果是轮播场景:替换为
carousel_slider等活跃维护的包,在pubspec.yaml中添加:carousel_slider: ^4.2.1 - 若必须使用原包:需手动修改缓存中的源码(不推荐),在
preload_page_view.dart的copyWith方法中添加devicePixelRatio参数,并在构造时传入该参数
处理fluro
直接升级到最新兼容版本,修改pubspec.yaml:
fluro: ^2.0.5 # 以pub.dev上的最新版本为准
或替换为官方推荐的GoRouter:
go_router: ^12.1.0
2. 执行依赖更新与清理
flutter clean flutter pub get
3. 解决Gradle StackOverflowError
修改android/gradle.properties文件,增加JVM内存配置:
org.gradle.jvmargs=-Xmx4096M -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
同时确保android/build.gradle中的Gradle版本与Android Gradle Plugin版本兼容(推荐使用Gradle 7.5+)
4. 重新运行项目
flutter run
内容的提问来源于stack exchange,提问作者Rasul
相关产品推荐
相关产品推荐

