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

Flutter const Text构造器传入动态变量报错Null无法赋值String类型

报错根因

你在Expanded组件前添加了const修饰符,Dart语法要求被const标记的组件的所有子组件、入参都必须是编译阶段就能确定的常量值。但你传入Text构造器的questions[questionNumber]是State类的实例属性,值会在运行时动态变化,不满足常量要求,因此触发了常量表达式求值异常、参数类型不匹配等报错。

解决方法

直接删除Expanded前的const关键字即可修复问题,修改后的代码片段如下:

@override
Widget build(BuildContext context) {
  return Column(
    mainAxisAlignment: MainAxisAlignment.spaceBetween,
    crossAxisAlignment: CrossAxisAlignment.stretch,
    children: [
      // 移除了此处的const修饰
      Expanded(
        flex: 5,
        child: Padding(
          // 固定不变的EdgeInsets可以单独保留const修饰
          padding: const EdgeInsets.all(10.0),
          child: Center(
            child: Text(
              questions[questionNumber],
              textAlign: TextAlign.center,
              // 固定不变的TextStyle也可以单独保留const修饰
              style: const TextStyle(
                fontSize: 25.0,
                color: Colors.white,
              ),
            ),
          ),
        ),
      ),
   ],
  );
}

如果希望尽可能保留const的性能优化收益,可以把不会动态变化的参数(比如内边距、文本样式)单独加const修饰,不需要整段外层组件都加const。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 15:42:02