我正在尝试从用户那里获取值,因为它们是在“文本”字段中键入的, 在下面将其显示为新文本。问题是我没有得到 文本字段中的值。这是我返回的代码。
代码:
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]),
);
},),
),
)),
],
),
我想将输入显示为用户类型,最新值 应该显示在列表顶部。
答案 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)