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 收集值。在教程中,这部分被跳过了。请帮忙

解决方法

您可以在 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
,

您需要使用 TextEditingController ,例如:

 TextEditingController _myController = TextEditingController();

final textfield = TextField(
          decoration: InputDecoration(
            enabledBorder: OutlineInputBorder(
              borderRadius: BorderRadius.all(Radius.circular(12.0)),

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

,

有多种方法可以做到:

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

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

    )

  2. 通过分配 TextEditingController()-

     TextEditingController textController;
    
     TextField(
     controller: textController,

现在用作

var value = textColtroller.text;