【发布时间】:2019-11-16 03:53:24
【问题描述】:
我正在寻找有关 TextEditingController 优于 OnChanged 事件对 TextField 的好处的更好解释。
我的理解是 onChanged 的 setState 通知所有小部件状态变量值的变化。这样,任何小部件(例如文本)都可以简单地使用状态变量,并且会在其更改时收到通知。
我的错误希望是 TextEditingController 会让我什至不需要状态变量变得更加简单。如下所示:
import "package:flutter/material.dart";
class TestForm extends StatefulWidget {
@override
State<StatefulWidget> createState() {
return TestFormState();
}
}
class TestFormState extends State<TestForm> {
//string myStateVariable = "";
final ctrl = TextEditingController();
@override
Widget build(BuildContext context) {
var tf = TextField(
controller: ctrl,
);
var t = Text("Current value: " + ctrl.text); // <<<<<<<<<<< false hope! doesnt work!
var x = Column(children: <Widget>[tf,t],);
return MaterialApp(home: Material(child: Scaffold(
appBar: AppBar(title: Text("Test Form"),),
body: x,
)));
}
}
谁能解释为什么 TextEditingController 或类似的东西不能管理状态本身并通知所有消费者状态变化?
谢谢。
【问题讨论】: