我没有texttedingcontroller a, texttedingcontroller b.......z
1)如何快速处理所有textditingcontroller
@override
void dispose() {
// _nameCtrl.dispose();
a.dispose();
b.dispose();
.....
....
z.dispose();
super.dispose();
}
- 如果不处理texteditingcontrol变量,会导致问题吗?
谢谢翼
尽量简化和缩短代码
据我所知:
dispose
表示您正在清理controller
时,小部件是从小部件树中删除。所以当树被重建时,例如:你是调用setState
将重建小部件树,并且因为您已经dispose
所有的控制器,他们不会消耗任何内存因为它们不存在于部件树中。
根据网上一篇很棒的文章:
如果您创建对象并且没有释放它们之前使用的内存销毁它们,你的申请才有可能通过应用商店或游戏商店的内存泄漏。这是出口有状态小部件的点。处理方法的执行在结束时,状态对象已经建立了足够的时间和现在没有必要重新构建。
这意味着它是一个很好的做法,总是处置所有的控制器,因为它们可能会导致以后的问题。
至于你的快捷方式为什么不使用for循环迭代一个列表,其中包含你在Stateful小部件中使用的所有控制器名称:
List tec = [a,b,c,d...z];
for(var element in tec) {
element.dispose();
}