Flutter initState TextField

u4vypkhs  于 2023-05-19  发布在  Flutter
关注(0)|答案(3)|浏览(131)

我开始使用Flutter,我发现了这两种方法来初始化一个控制器,在TextField中使用它,但是,使用其他方法之一有什么区别?
这是第一个:

TextEditingController _controller;

@override
  void initState() {
_controller = TextEditingController();
super.initState();
}

...
TextField(
  controller: _controller,
),

这是另一种方式:

final _controller = TextEditingController();
...
TextField(
  controller: _controller,
),

先谢谢你。

0sgqnhkj

0sgqnhkj1#

initState()方法在StatefullWidget中被调用,当它第一次被示例化时,它具有与在构造函数中初始化时相同的效果。总之,除了在StatelessWidget中不能用initState()初始化变量之外,没有任何具体的区别

7kqas0il

7kqas0il2#

唯一的区别是,使用final可以确保在 * 编译时 * controller变量将始终指向同一个对象(即它的值永远不会改变)。

nafvub8i

nafvub8i3#

初始化TextEditingController右侧:

late final TextEditingController _controller;

@override
  void initState() {
 super.initState();
_controller = TextEditingController();
}

@override
  void dispose() {
    _controller.dispose;
    super.dispose();
  }

...
TextField(
  controller: _controller,
),

相关问题