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

Flutter运行TextField代码报RenderBox was not laid out错误如何解决

报错根因

这是Flutter布局约束冲突导致的典型问题:

  • Row的子元素默认没有明确的宽度约束,而TextField在无宽度限制时会默认尝试占满父级的最大可用宽度,二者逻辑冲突导致布局计算失败,最终抛出RenderBox未完成布局的异常。
修复方案

用Expanded组件包裹TextField外层的Container,明确告诉布局系统该组件占用Row内的剩余可用空间即可。

修复后代码示例
@override
Widget build(BuildContext context) {
  return Scaffold(
    body: SafeArea(
      child: Row(
        children: <Widget>[
          Expanded(
            child: Container(
              // padding: EdgeInsets.all(30), 可按需开启
              child: TextField(
                style: TextStyle(
                  color: Colors.black,
                ),
                decoration: kCityTextFieldInputDecoration,
              ),
            ),
          ), 
        ],
      ),
    ),
  );
}
其他可选方案

如果不需要TextField占满Row剩余空间,也可以直接给外层Container指定固定宽度,同样能解决约束冲突:

Container(
  width: 250, // 自定义固定宽度
  child: TextField(/* 原有配置 */),
)

内容的提问来源于stack exchange,提问作者Usama Bin Tahir

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 05:15:05