TextField触发onChanged时出现循环日志及RenderFlex溢出问题求助
问题原因分析
1. RenderFlex 底部溢出(A RenderFlex overflowed by 5.9 pixels on the bottom)
- 该错误源于布局空间不足:TextField在输入时若自动调整高度(比如开启
maxLines),但父容器(如Row/Column)未预留足够垂直空间,也没有用可滚动组件(如SingleChildScrollView)包裹,导致内容超出容器边界。 - 排查方向:检查TextField的父布局是否限制了固定高度,或是未适配内容增长后的空间需求。
2. 循环日志(EGL_emulation的app_time_stats重复打印)
- 这类日志是EGL渲染层的性能统计,重复出现且avg接近500ms,说明UI线程阻塞或频繁重绘:
- 核心原因大概率是
onChanged回调中触发了setState操作,而setState会重新渲染TextField,进而再次触发onChanged,形成循环。 - 典型场景:在
onChanged里直接修改状态变量并调用setState,导致每输入一个字符就触发重绘,重绘后又触发onChanged,无限循环。
- 核心原因大概率是
- 验证方法:暂时注释
onChanged内的setState逻辑,观察日志是否停止循环,同时UI是否恢复正常。
内容的提问来源于stack exchange,提问作者user20019751
相关产品推荐
相关产品推荐

