Flutter:如何从 TextField 获取值

时间:2021-04-29 04:56:28

标签: flutter textfield

class _UpdateViewState extends State<UpdateView> {
  var dropDownValue = "Vaccine";
  @override
  Widget build(BuildContext context) {
    void getDropDownItem(){
        print(val);     //Need help here
      ;}
    return  Scaffold(
      body: new Column(
          children: <Widget>[
          SizedBox(height: 100),
      new ListTile(
        leading: const Icon(Icons.person),
        title: TextField(
          decoration: InputDecoration(
            enabledBorder: OutlineInputBorder(
              borderRadius: BorderRadius.all(Radius.circular(12.0)),
              borderSide: BorderSide(color: Colors.blue, width: 2),
            ),
            focusedBorder: OutlineInputBorder(
              borderRadius: BorderRadius.all(Radius.circular(10.0)),
              borderSide: BorderSide(color: Colors.blue),
            ),
            border: OutlineInputBorder(),
            labelText: 'Enter Provider Name Here',
            hintText: 'Provider Name',
  

        ),
            ),
          ),
}

在这个 ListTile 中,我试图收集文本值并打印。我什至不确定如何从 TextField 收集值。在教程中,这部分被跳过了。请帮忙

3 个答案:

答案 0 :(得分:0)

您可以在 TextField 中设置控制器

获取控制器变量

TextEditingController controller = new TextEditingController();

在 TextField 设置控制器

TextField(
          controller: controller,
          decoration: InputDecoration(
            enabledBorder: OutlineInputBorder(
              borderRadius: BorderRadius.all(Radius.circular(12.0)),
              borderSide: BorderSide(color: Colors.blue, width: 2),
            ),
            focusedBorder: OutlineInputBorder(
              borderRadius: BorderRadius.all(Radius.circular(10.0)),
              borderSide: BorderSide(color: Colors.blue),
            ),
            border: OutlineInputBorder(),
            labelText: 'Enter Provider Name Here',
            hintText: 'Provider Name',
  

        )

你可以使用控制器获取文本

controller.text

答案 1 :(得分:0)

您需要使用 TextEditingController ,例如:

 TextEditingController _myController = TextEditingController();

final textfield = TextField(
          decoration: InputDecoration(
            enabledBorder: OutlineInputBorder(
              borderRadius: BorderRadius.all(Radius.circular(12.0)),
              borderSide: BorderSide(color: Colors.blue, width: 2),
            ),
            focusedBorder: OutlineInputBorder(
              borderRadius: BorderRadius.all(Radius.circular(10.0)),
              borderSide: BorderSide(color: Colors.blue),
            ),
            border: OutlineInputBorder(),
            labelText: 'Enter Provider Name Here',
            hintText: 'Provider Name',
  

        ),

然后您可以使用 _myController.text 属性访问此值

答案 2 :(得分:0)

有多种方法可以做到:

  1. 声明一个变量并为其赋值-

     String textvalue;
    
     TextField(
     onChanged: (value) {
         email = value;
     },
    

    )

  2. 通过分配 TextEditingController()-

     TextEditingController textController;
    
     TextField(
     controller: textController,
     ),
    

现在用作

var value = textColtroller.text;