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

Flutter引入english_words包后使用wordPair.asPascalCase报非常量错误怎么办

Flutter english_words包使用报"Not a constant expression"错误解决方案

错误根因

报错触发的原因是包含动态运行时值的Text组件被放在了const修饰的父Widget内部:

  • Dart语法中,被const标记的Widget要求其所有子属性都必须是编译期就能确定的常量
  • wordPair是通过english_words包运行时动态生成的实例,wordPair.asPascalCase属于运行时才会计算的值,不满足常量要求,因此触发编译错误

该报错与english_words依赖的导入无关,无需调整pubspec.yaml中的依赖配置。

修复方案

方案一:移除父组件的const修饰

找到Text(wordPair.asPascalCase)所在的父组件,删除父组件前的const关键字即可,示例:

// 错误写法
const Center(
  child: Text(wordPair.asPascalCase),
)

// 修正后写法
Center(
  child: Text(wordPair.asPascalCase),
)

方案二:仅对常量属性保留const修饰

如果需要保留const的性能优化,可以仅给Text组件下固定不变的参数加const,不要给整个Text或者包含动态值的父组件加const:

Center(
  child: Text(
    wordPair.asPascalCase,
    // 固定不变的样式参数可以保留const
    style: const TextStyle(color: Colors.black, fontSize: 18),
  ),
)

修改完成后重新运行应用即可解决报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 07:24:02