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

升级Flutter后TextFormField输入触发Stack Overflow异常如何解决

异常原因

该升级后触发的输入栈溢出问题,属于Flutter版本迭代后第三方依赖适配不兼容引发的递归死循环,常见触发点有两个:

  1. 自适应单位计算逻辑异常:你代码中使用了.h结尾的自适应单位(对应flutter_screenutil等适配插件),Flutter 3.10+版本重构了组件重绘机制,旧版本适配插件在TextFormField输入触发局部重绘时,会重复执行单位计算逻辑引发递归,最终栈溢出。
  2. 国际化调用逻辑异常:代码中*getTranslated国际化方法*直接在TextFormField的属性中实时调用,若你的国际化实现依赖上下文递归查找资源,重绘时重复调用会引发死循环。
修复方案
  • 优先测试自适应插件问题:将代码中8.0.h、2.0.h替换为固定像素值,若替换后输入不再报错,直接将flutter_screenutil升级到最新稳定版即可,后续也可以把自适应单位计算提前放到initState中用final变量缓存,减少build时的重复计算。
  • 若替换单位后仍报错,修改国际化调用逻辑:把getTranslated(context, 'clientName')这类调用提前在State的initState中赋值给final字符串变量,TextFormField的属性直接引用缓存好的字符串变量,避免每次重绘都触发国际化资源查找。
  • 若以上两步都未解决,确认你的Flutter SDK版本和插件版本匹配:当前你使用的Flutter插件50.0.1对应Flutter 3.10+版本,要求Dart SDK版本≥3.0,版本不匹配的话重新安装对应版本的Flutter、Dart插件即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 02:48:04