作为函数参数传递时在哪里销毁TextEditingController?

问题描述 投票:0回答:1

有关于 如何正确销毁 TextEditingController 的文档,但这些文档对我的情况没有帮助。我的项目中有重复的代码,所以我想通过创建一个需要具有以下签名的函数来最小化代码:

Widget displayMyWidgets(String label, TextEditingController _controller) {
  return Container(
    // codes to display widget(s) here.
  );
}

我还读到,您不能保留流和 TextEditingController 未处置,因为这会导致 内存泄漏,并且 如果我们不处置它们,它们仍然可用。 (这些一定是正确的吗?)

那么,如果我在项目中使用上述函数,我应该在哪里销毁

_controller
?或者当 _controller 是函数本地时,垃圾收集器会在这种情况下工作吗? (如果可能,请指出资源。)在上面,当然,我将无法在返回函数之后调用
.dispose()

在我的

Container
中,我主要在只读模式下使用
TextField
来显示动态文本,所以我不认为我可以在其
onChanged
或其他地方编写任何代码?

flutter garbage-collection destroy texteditingcontroller
1个回答
0
投票

在 Widget 中创建它:通常,您将在 StatefulWidget 中创建 TextEditingController。

Widget 的 dispose() 方法中的 Dispose:在 StatefulWidget 的 dispose() 方法中对 TextEditingController 进行 Dispose,以释放其资源。

不要在函数中处理:避免在接收它的函数中处理它。相反,让拥有控制器的小部件处理其处置。

© www.soinside.com 2019 - 2024. All rights reserved.