为什么FocusNode需要在flutter中进行配置?

sgo*_*n00 9 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();
}
Run Code Online (Sandbox Code Playgroud)

为什么我必须打电话myFocusNode.dispose();?如果我不打电话会怎样?

请解释清楚一点,或者给我一些明显的错误代码示例,当不为 FocusNode 调用 dispose 或其他情况而不是简单地告诉我这会导致内存泄漏时,会显示不良结果...

非常感谢。

Sna*_*ips 12

从文档:

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

换句话说,处理它们可以确保节点在每次构建小部件时正确调用焦点,其他调用焦点的小部件没有问题,并且还保留了性能。

  • 感谢您的回复。实际上,我想查看一些在不处理 FocusNode 时会导致可观察问题的代码。当我忘记处理 FocusNode 时,我不确定如何解决和调试问题。 (2认同)