Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 颤振初始状态文本字段_Flutter_Dart - Fatal编程技术网

Flutter 颤振初始状态文本字段

Flutter 颤振初始状态文本字段,flutter,dart,Flutter,Dart,我开始使用颤振,我发现这两种方法可以初始化一个控制器,在文本字段中使用它,但是,使用其中一种有什么区别 以下是第一点: TextEditingController _controller; @override void initState() { _controller = TextEditingController(); super.initState(); } ... TextField( controller: _controller, ), 这是另一种方式: final _

我开始使用颤振,我发现这两种方法可以初始化一个控制器,在文本字段中使用它,但是,使用其中一种有什么区别

以下是第一点:

TextEditingController _controller;

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

...
TextField(
  controller: _controller,
),
这是另一种方式:

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

提前感谢。

当第一次实例化时,initState()方法在StatefullWidget中被调用,其效果与在构造函数中初始化时相同。总之,除了不能在无状态小部件中使用initState()初始化变量外,没有任何本质上的区别。唯一的区别是使用
final
可以确保在编译时
控制器
变量始终指向同一个对象(即,它的值永远不会改变).

对于TextEditingController,您可以直接声明它,就像第二种方法一样,因为它始终取决于类的声明方式。TextEditingController更方便,您可以这样做:)。关于initState:这些是仅与StatefulWidgets一起提供的Widget生命周期方法。在无状态小部件中,你不会有这些方法。有趣的是,我必须学习一些东西,比如小部件生命周期方法,我很感激!。谢谢,这就解决了我的问题!所以我可以使用任何方式来使用控制器,考虑到小部件是有状态的,这是我理解的。