Flutter添加location包报错:Kotlin版本不兼容,能否不用该包实现功能?
Flutter添加location包的版本冲突问题及替代方案
问题原因
你的项目根build.gradle中配置的Kotlin版本为1.7.10,但location依赖的kotlin-gradle-plugin版本是1.4.20,低于Android Gradle插件7.3.0要求的最低版本1.5.20,导致构建失败。
解决方法
修改根目录下的build.gradle,强制所有子项目使用统一的Kotlin版本,具体操作如下:
替换原有的subprojects配置块为以下内容:
subprojects { project.buildDir = "${rootProject.buildDir}/${project.name}" // 强制统一Kotlin版本 project.ext { kotlin_version = '1.7.10' } tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach { kotlinOptions { jvmTarget = '1.8' } } } subprojects { project.evaluationDependsOn(':app') // 覆盖子项目的Kotlin插件版本 afterEvaluate { project -> if (project.plugins.hasPlugin('kotlin-android')) { project.buildscript.dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:${kotlin_version}" } } } }
修改完成后,执行以下命令清理缓存并重新构建:
flutter clean flutter run
不使用location包实现定位的方案
完全可以,有两种主流方式:
- 使用
geolocator插件:这是Flutter生态中更活跃、兼容性更好的定位插件,支持获取当前位置、监听位置更新、权限申请等全功能,版本适配更完善。 - 原生实现:分别在Android和iOS端编写原生定位逻辑,通过Flutter的
MethodChannel实现跨平台通信。Android可使用FusedLocationProviderClient,iOS使用CoreLocation框架,再在Flutter层调用原生方法获取位置数据。
内容的提问来源于stack exchange,提问作者Shahbaz Gondal
相关产品推荐
相关产品推荐

