在扑打中使用dispose
时,我有点困惑。是否有关于此的好的教程?
在食谱https://flutter.io/docs/cookbook/forms/focus中:
void dispose() {
// Clean up the focus node when the Form is disposed
myFocusNode.dispose();
super.dispose();
}
为什么我必须打myFocusNode.dispose();
?如果我不打电话怎么办?
请解释清楚一些,或者给我一些明显的错误代码示例,这些代码示例在不为FocusNode或其他情况而调用dispose时显示不良结果,而不是简单地告诉我这会导致内存泄漏...
非常感谢。
答案 0 :(得分:2)
焦点节点是长期存在的对象。例如,如果有状态窗口小部件具有可聚焦的子窗口小部件,则应在State.initState方法中创建一个FocusNode,并将其放置在State.dispose方法中,每次State.build方法为可聚焦的子对象提供相同的FocusNode。运行。特别是,每次调用State.build时创建一个FocusNode都会导致每次构建小部件时都失去焦点。
换句话说,布置它们可以确保每次构建窗口小部件时节点都能正确调用焦点,其他调用焦点的其他窗口小部件也没有问题,并且还可以保持性能。