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

升级旧Flutter项目全量依赖后 mp_chart 0.3.1 出现构建报错如何解决

mp_chart 0.3.1版本兼容性报错解决方案

你遇到的两个报错完全是mp_chart 0.3.1本身的版本兼容性问题,和你的项目业务代码无关,该版本最后更新于2021年,未适配后续推出的高版本Flutter、Dart的语法变更。

报错原因

  • 第一个InlineSpan无text属性报错:Flutter 2.10及以上版本将TextPainter的text属性类型从TextSpan调整为了InlineSpan,而InlineSpan本身没有text getter,只有其子类TextSpan才有该属性,mp_chart旧代码没有做类型适配。
  • 第二个FutureOr无then方法报错:Dart 2.12及以上版本强化了类型校验,FutureOr属于联合类型,可能是直接值也可能是Future对象,不能直接调用then方法,mp_chart旧代码未做兼容处理。

修复方案

方案1:降级Flutter版本

将你的Flutter版本降级到2.8.x及以下版本,该版本区间的Flutter、Dart语法完全匹配mp_chart 0.3.1的代码要求,无需修改任何代码即可正常运行。

方案2:手动适配mp_chart源码

你可以通过以下两种方式修改源码适配高版本环境:

  1. 直接修改Pub缓存中的对应文件:
    • 打开mp_chart-0.3.1/lib/mp/core/utils/painter_utils.dart,将第15行的var preText = painter.text.text;修改为var preText = (painter.text as TextSpan).text;
    • 打开mp_chart-0.3.1/lib/mp/chart/chart.dart,将第51行直接调用then的代码前包裹一层Future.value(),比如原代码为xxx.then((value) {,修改为Future.value(xxx).then((value) {
  2. 也可以fork该库的官方仓库修改后,在pubspec.yaml中通过git依赖指向你修改后的仓库地址,避免本地缓存修改丢失。

方案3:替换图表库

直接弃用停止维护的mp_chart,换用当前仍在持续迭代的fl_chart等图表库,这类库已适配最新的Flutter、Dart版本,不会出现兼容性问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 18:45:08