选择StatelessWidget或StatefulWidget作为具有TextEditingController的子窗口小部件

时间:2019-05-25 12:18:14

标签: flutter statefulwidget statelesswidget

我正在研究重构代码以分离小部件。 每行都有几列TextFields

  1. 选择StatelessWidget,因为它具有更高的性能,可能会将与TextEditingController相关的代码放在子窗口小部件之外。或者在onChanged事件中包含一些逻辑。但是仍然有一些事件,例如clear text无法放入onChanged事件

  2. 如果我使用StatefulWidget,请在每个子小部件内选择TextEditingController

在将代码重构为此类小部件时如何在StatelessWidgetStatefulWidget之间进行选择?


更新

这是我目前的结论,如果不正确,可以更新。

  • 请优先使用TextEdit FocusNode的{​​{1}},因为它与兄弟focusNode和parentNode有关;
  • 建议放置in parent TextEdtingController,如果此TextField可能像长的ListView一样在屏幕外显示,则在这种情况下,要卸载的小孔可以放在父级中,以保持文本状态。
  • li>
  • 在输入错误的in parent时,最好像摇晃TextField那样放置animation self。由于它是一种自我特征,与父系无关。

1 个答案:

答案 0 :(得分:1)

根据评论部分的讨论进行编辑:

将代码重构为较小的Python 3时,应采用第二种方法。 StatefulWidgets应该具有通过调用嵌套TextField内部内容的功能来更改嵌套TextFields的内容及其行为的功能,如您先前指出的,您需要管理此行为。