You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter 3.0.2构建失败:audio_waveforms包引发Kotlin编译报错

问题原因

该编译错误由audio_waveforms 0.1.1版本Android端实现与Flutter 3.0+版本API不兼容导致。Flutter 3.0版本调整了PluginRegistry.RequestPermissionsResultListener接口中onRequestPermissionsResult方法的参数签名,旧版本插件中覆写的方法签名与新接口不匹配,因此编译器提示方法覆写无效、类未实现抽象接口成员。

你之前执行的重装依赖、flutter clean操作没有解决问题,是因为这些操作不会改变旧版本插件本身的代码逻辑。

解决方案

按优先级从高到低选择以下方案即可:

  • 方案1:升级插件到兼容版本(推荐)

    1. 打开项目根目录下的pubspec.yaml文件,将audio_waveforms的依赖版本修改为^0.1.5(该及以上官方版本已完成Flutter 3.0适配,修复了此签名不匹配问题)
    2. 保存文件后在项目根目录执行命令拉取新依赖:
      flutter pub get
      
    3. 重新执行构建命令即可正常编译。
  • 方案2:本地临时修复(无法升级依赖时使用)
    如果项目存在其他兼容限制无法升级插件版本,可直接修改本地Pub缓存中的插件代码临时修复:

    1. 打开报错信息中提示的文件:/Users/baw/flutter/.pub-cache/hosted/pub.dartlang.org/audio_waveforms-0.1.1/android/src/main/kotlin/com/simform/audio_waveforms/AudioRecorder.kt
    2. 定位到第97行附近的onRequestPermissionsResult方法,将方法签名修改为Flutter 3.0要求的格式,方法内部原有逻辑全部保留,仅修改方法头:
      override fun onRequestPermissionsResult(
          requestCode: Int,
          permissions: Array<out String>,
          grantResults: IntArray
      ): Boolean {
          // 此处保留原方法内的所有代码不要修改
      }
      
    3. 保存文件后回到项目根目录执行flutter clean,重新构建即可。

    注意:该方案修改的是Pub全局缓存中的文件,执行flutter pub cache repair、切换开发设备重新拉取依赖时修改会失效,优先选择升级依赖的方案。

  • 方案3:强制覆盖依赖版本
    如果项目中有其他间接依赖锁定了旧版audio_waveforms,可在pubspec.yaml末尾添加覆盖配置强制使用兼容版本:

    dependency_overrides:
      audio_waveforms: ^0.1.5
    

    保存后执行flutter pub get拉取依赖,再重新构建即可。


内容的提问来源于stack exchange,提问作者Tonny Bawembye

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 10:01:46