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);
                      },