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

Flutter使用Firestore包报Error.throwWithStackTrace错误解决方法

报错原因

核心原因是本地Flutter/Dart SDK版本过低。Error.throwWithStackTrace是Dart 2.16版本才新增的内置方法,你在pubspec.yaml中声明Firebase相关依赖时没有指定版本号,pub get默认拉取的最新版Firebase平台接口层依赖(cloud_firestore_platform_interface 5.5.0、firebase_auth_platform_interface 6.2.0、firebase_storage_platform_interface 4.1.0)都调用了这个高版本Dart才有的方法,和本地低版本SDK不兼容,同时触发了返回值非空的校验报错。

可行解决方案

二选一即可:

  • 方案1:升级本地Flutter SDK(推荐,后续引入location等其他新依赖也不会频繁遇到版本兼容问题)
    终端执行以下命令切换到稳定渠道并升级到最新版SDK:
    flutter channel stable
    flutter upgrade
    
    升级完成后清理构建缓存、重新拉取依赖:
    flutter clean
    flutter pub get
    
    重新编译项目即可正常运行。
  • 方案2:不升级SDK,锁定Firebase依赖的兼容低版本
    打开项目根目录的pubspec.yaml,把dependencies下的相关依赖替换为适配低版本Dart的固定版本号,不要留空让工具自动拉取最新不兼容版本:
    dependencies:
      flutter:
        sdk: flutter
      get: ^4.6.5
      firebase_auth: ^3.3.20
      firebase_storage: ^10.2.18
      cloud_firestore: ^3.1.18
      # 后续引入location包时,低版本SDK可锁定使用4.x版本避免兼容问题
      # location: ^4.4.0
    
    保存文件后执行以下命令清理缓存重新拉取依赖:
    flutter clean
    flutter pub get
    
    重新编译即可解决报错。

注意:如果选择方案2,后续引入其他第三方依赖时如果出现类似的成员找不到、空返回校验报错,优先查找对应依赖适配当前SDK版本的历史版本,在pubspec.yaml中锁定版本号即可,不要使用无版本号的空依赖声明。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 11:06:20