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

Flutter添加TextField后屏幕空白,RenderRepaintBoundary异常求助

问题原因及解决方案

问题原因

  1. 布局约束缺失:Row是水平线性布局,要求内部子组件有明确的宽度约束。TextField默认会试图占据无限宽度,在Row中未指定宽度约束的情况下,会导致布局计算失败,触发RenderBox was not laid out断言错误,最终造成屏幕空白。
  2. const修饰违规:你给Row的children标记了const,但TextField的controller: phoneNumber是运行时变量,const列表中不能包含非const的子组件,这会引发逻辑冲突,进一步加剧布局异常。

解决方案

修改后的代码如下:

Container(
  height: 55,
  decoration: BoxDecoration(
    border: Border.all(
      width: 1,
      color: Colors.black,
    )
  ),
  child: Row(
    children: [ // 移除const关键字
      SizedBox(
        width: 8,
      ),
      Text(
        " +91 - ",
        style: TextStyle(
          fontSize: 30
        ),
      ),
      // 用Expanded包裹TextField,赋予宽度约束
      Expanded(
        child: TextField(
          controller: phoneNumber,
          keyboardType: TextInputType.number,
        ),
      ),
    ],
  ),
),

修改说明

  • Expanded组件:让TextField自动填充Row中除固定宽度组件(SizedBox、Text)之外的剩余空间,给TextField一个明确的宽度约束,解决布局计算失败的问题。
  • 移除const:const列表要求所有子组件必须是编译时常量,而phoneNumber是运行时创建的控制器对象,不符合const的要求,移除后即可消除潜在的逻辑冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 21:30:58