我开始使用Flutter,我发现了这两种方法来初始化一个控制器,在TextField中使用它,但是,使用其他方法之一有什么区别?
这是第一个:
TextEditingController _controller;
@override
void initState() {
_controller = TextEditingController();
super.initState();
}
...
TextField(
controller: _controller,
),
这是另一种方式:
final _controller = TextEditingController();
...
TextField(
controller: _controller,
),
先谢谢你。
3条答案
按热度按时间0sgqnhkj1#
initState()方法在StatefullWidget中被调用,当它第一次被示例化时,它具有与在构造函数中初始化时相同的效果。总之,除了在StatelessWidget中不能用initState()初始化变量之外,没有任何具体的区别
7kqas0il2#
唯一的区别是,使用
final
可以确保在 * 编译时 *controller
变量将始终指向同一个对象(即它的值永远不会改变)。nafvub8i3#
初始化TextEditingController右侧: