Flutter代码在模拟器触发StackOverflow错误,该如何修改?
Flutter代码StackOverflow错误修复方案
你这段代码触发栈溢出的核心原因是无限递归:你定义的getter方法名RecentTransation和要过滤的数据源同名了,导致每次调用这个getter时,它都会自己调用自己,循环往复直到栈被耗尽。
需要做这两处修改:
- 把getter的名称和原始数据源变量区分开(比如原始数据源用私有变量
_recentTransactions,getter用小驼峰的recentTransactions,符合Dart命名规范) - 删掉
Duration(days: 6)后面多余的逗号,修正语法错误
修正后的代码示例:
// 假设这是你的原始数据源列表 List<Transition> _recentTransactions = []; List<Transition> get recentTransactions { return _recentTransactions.where((tx) { return tx.date.isAfter(DateTime.now().subtract(Duration(days: 6))); }).toList(); }
说白了就是:别让getter的名字和它要访问的数据源重名,不然会自己调用自己搞死程序。
内容的提问来源于stack exchange,提问作者JayN ____
相关产品推荐
相关产品推荐

