Flutter:如果 TextField 小部件未更改,如何将初始化值作为最终值
Flutter: How to get initialized value as the final value if the TextField widget is not changed
这是 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),
borderRadius:
BorderRadius.all(Radius.circular(32.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),
),
),
),
我们将不胜感激。
你必须在构建方法之外声明你的 TextEditingController
并将其声明为状态 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);
},
这是 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),
borderRadius:
BorderRadius.all(Radius.circular(32.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),
),
),
),
我们将不胜感激。
你必须在构建方法之外声明你的 TextEditingController
并将其声明为状态 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);
},