如何从文本字段获取输入值并将其显示为新文本

时间:2019-05-23 11:15:20

标签: flutter

我正在尝试从用户那里获取值,因为它们是在“文本”字段中键入的, 在下面将其显示为新文本。问题是我没有得到 文本字段中的值。这是我返回的代码。

代码:

Column(
        mainAxisSize: MainAxisSize.min,
        children: <Widget>[
          Container(
            child: Padding(padding: EdgeInsets.only(right: 150.0, top: 18.0,left: 10.0),
              child:TextField(
                controller: Controller,
                decoration: InputDecoration(
                  border: OutlineInputBorder(),
                  hintText: 'please enter your name',
                ),
              ),
            ),
          ),
          Container(
            margin: EdgeInsets.only(left: 250.0),
            child: RaisedButton(
              onPressed: () {
                setState(() {
                  msg.add(Controller.text);
                  msg.clear();
                });
              },
              child: Text('Add'),
            ),
          ),
          Expanded(
            flex: 2,
              child: Container(
                child: Card(
                  margin: EdgeInsets.all(8.0),
                  child: ListView.builder(
                    itemCount: msg.length,
                    itemBuilder: (context, index){
                      return ListTile(
                        title: Text(msg[index]),
                      );
                    },),
                ),
              )),
        ],
      ),

我想将输入显示为用户类型,最新值 应该显示在列表顶部。

2 个答案:

答案 0 :(得分:0)

TextField()小部件具有一个onChanged:方法,每次输入更改时都会调用该方法。

class _MyHomePageState extends State<MyHomePage> with TickerProviderStateMixin {
  String changedText = ""; //you need to set the String here
                           //if you set it after `Widget build()`
                           //it'll be set empty again
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("AppBar"),
      ),
      body: Column(
        children: [
          Container(
            child: TextField(
              onChanged: (text) {
                print("changing");
                setState(
                  () {
                    changedText = text; //here you change the text to show it below
                  },
                );
              },
            ),
          ),
          Text(changedText),
        ],
      ),
    );
  }
}

答案 1 :(得分:0)

使用TextEditingController对象并将该对象传递到文本字段。

并使用textEditingControllerObject.text来获取文本字段中的最新值。

编辑:

创建一个TextEditingController对象。

TextEditingController controller = TextEditingController();

将控制器对象传递给textField小部件。

TextField(
  controller: controller,
)

文本小部件将异步显示来自textField的文本。

Text(controller.text)