为什么FocusNode需要配置在抖动中?

时间:2018-11-14 11:32:42

标签: dart flutter

在扑打中使用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时显示不良结果,而不是简单地告诉我这会导致内存泄漏...

非常感谢。

1 个答案:

答案 0 :(得分:2)

As from the documentation:

  

焦点节点是长期存在的对象。例如,如果有状态窗口小部件具有可聚焦的子窗口小部件,则应在State.initState方法中创建一个FocusNode,并将其放置在State.dispose方法中,每次State.build方法为可聚焦的子对象提供相同的FocusNode。运行。特别是,每次调用State.build时创建一个FocusNode都会导致每次构建小部件时都失去焦点。

换句话说,布置它们可以确保每次构建窗口小部件时节点都能正确调用焦点,其他调用焦点的其他窗口小部件也没有问题,并且还可以保持性能。