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

Flutter实现一键播放/停止本地音频编译失败求助

解决assets_audio_player空安全编译失败问题

这是因为该包源码未处理WidgetsBinding.instance可能为空的情况,直接调用addObserver和removeObserver方法,违反了Flutter空安全规则。以下是几个可行的解决办法:

  • 优先升级包到最新版本
    执行命令:

    flutter pub upgrade assets_audio_player
    

    包作者大概率已在新版本修复了这个空安全问题,升级后重新编译项目即可。

  • 自行修复包源码(若新版本未修复)

    1. 前往该包的GitHub仓库,fork一份代码到自己的账户下
    2. 找到调用WidgetsBinding.instance.addObserver和removeObserver的文件(通常是与组件生命周期相关的类文件),将两处调用修改为:
      WidgetsBinding.instance?.addObserver(this);
      WidgetsBinding.instance?.removeObserver(this);
      
    3. 在项目的pubspec.yaml中替换依赖为你修复后的fork版本:
      assets_audio_player:
        git:
          url: https://github.com/你的GitHub用户名/assets_audio_player.git
          ref: main # 或你修复代码所在的分支名
      
    4. 执行flutter pub get后重新编译项目。
  • 临时绕过(不推荐,仅紧急场景使用)
    如果项目尚未完全迁移空安全,可在pubspec.yaml中添加如下配置,允许依赖非空安全的包版本:

    environment:
      sdk: ">=2.12.0 <3.0.0" # 保持你当前的SDK版本
      flutter: ">=2.0.0"
    dependency_overrides:
      assets_audio_player: ^兼容的旧版本号 # 选择适配你项目空安全状态的版本
    

    这种方法可能带来潜在隐患,建议优先采用前两种方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 05:27:26