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

Flutter自定义底部弹窗BSheetWidget赋值时抛出StackOverflowError如何解决

栈溢出问题根本原因

你遇到的StackOverflowError是代码笔误导致的无限递归调用触发的:
看你的Driver模型里carReference getter的实现:

// 错误写法
String get carReference => get<String>(carReference);

这里get<String>()方法需要传入的是存储字段对应的key常量carReferenceKey,但你误传成了carReference——也就是当前正在定义的getter本身。
每次你调用widget.fullData.driver.carReference取值时,getter内部会再次调用carReference getter,形成没有终止条件的无限递归,调用栈不断累积最终撑爆内存,抛出栈溢出异常。你提供的报错栈里反复出现同一行Driver.carReference package:taxi_app/…/models/driver.dart:29就是无限递归的典型特征。

正确处理方式
  1. 修正Driver模型中carReference getter的参数,替换为对应的常量key即可:
// 修正后写法
String get carReference => get<String>(carReferenceKey);
  1. 可以额外做两个优化避免同类问题:
  • IDE开启拼写检查,或者给字段key常量统一加辨识度更高的命名后缀,降低手滑写错的概率
  • 遇到栈溢出报错时,优先排查栈日志里重复出现的方法,检查是否存在递归调用自身的逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 14:06:03