微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Flutter:如果 TextField 小部件未更改,如何获取初始化值作为最终值

如何解决Flutter:如果 TextField 小部件未更改,如何获取初始化值作为最终值

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。