问题描述
这是 TextField 的代码。我已经初始化了它,如果文本字段未更改,我希望在按下按钮时打印此值。
Container(
width: 80,child: TextField(
controller: TextEditingController()..text = '${json['satur']}',onChanged: (value) => {
satur = value,},keyboardType: TextInputType.number,textAlign: TextAlign.center,style: const TextStyle(
color: Colors.orangeAccent,),cursorColor: Colors.orangeAccent,decoration: const Inputdecoration(
contentPadding: EdgeInsets.symmetric(
vertical: 10.0,horizontal: 20.0),border: OutlineInputBorder(
borderRadius:
BorderRadius.all(Radius.circular(32.0)),enabledBorder: OutlineInputBorder(
borderSide: BorderSide(
color: Colors.orangeAccent,width: 1.0),borderRadius:
BorderRadius.all(Radius.circular(32.0)),focusedBorder: OutlineInputBorder(
borderSide: BorderSide(
color: Colors.orangeAccent,width: 2.0),//flexible
),
这是按钮的代码:
Material(
color: Colors.deepOrangeAccent,borderRadius: const BorderRadius.all(Radius.circular(30.0)),elevation: 5.0,child: MaterialButton(
onpressed: () {
print("Success");
print('${satur}');
},minWidth: 100.0,height: 42.0,child: const Text(
'Evaluate',style: TextStyle(color: Colors.white,fontSize: 20),
您的帮助将不胜感激。
解决方法
您必须在 build 方法之外声明您的 TextEditingController
并将其声明为 State Class 的字段。然后当它作为控制器传递给您的 TextField
时。然后您可以使用该控制器读取 TextField
的当前值,如下所示。
// inside your State class
TextEditingController textEditingController = TextEditingController();
//..............
// your text field
child: TextField(
controller: textEditingController..text = '${json['satur']}',//.....................
//inside your onPressed method
onPressed: () {
String value = textEditingController.value.text;
print("Success");
print(value);
},