我想为文本字段提供初始值,并使用空值重绘它以清除文本。使用Flutter API的最佳方法是什么?
答案 0 :(得分:52)
(来自邮件列表。我没有想出这个答案。)
class _FooState extends State<Foo> {
TextEditingController _controller;
@override
void initState() {
super.initState();
_controller = new TextEditingController(text: 'Initial value');
}
@override
Widget build(BuildContext context) {
return new Column(
children: <Widget>[
new TextField(
// The TextField is first built, the controller has some initial text,
// which the TextField shows. As the user edits, the text property of
// the controller is updated.
controller: _controller,
),
new RaisedButton(
onPressed: () {
// You can also use the controller to manipuate what is shown in the
// text field. For example, the clear() method removes all the text
// from the text field.
_controller.clear();
},
child: new Text('CLEAR'),
),
],
);
}
}
答案 1 :(得分:22)
您可以使用TextFormField
代替TextField
,并使用initialValue
属性。例如
TextFormField(initialValue: "I am smart")
答案 2 :(得分:13)
如果您使用的是 TextEditingController ,请像下面一样设置文本
TextEditingController _controller = new TextEditingController();
_controller.text = 'your initial text';
final your_text_name = TextFormField(
autofocus: false,
controller: _controller,
decoration: InputDecoration(
hintText: 'Hint Value',
),
);
,如果您不使用任何 TextEditingController ,则可以直接使用 initialValue ,如下所示
final last_name = TextFormField(
autofocus: false,
initialValue: 'your initial text',
decoration: InputDecoration(
hintText: 'Last Name',
),
);
有关更多参考,TextEditingController
答案 3 :(得分:4)
如果您要处理@MRT在接受的答案的注释中要求的多个TextInput
,则可以创建一个采用初始值并返回TextEditingController
的函数,如下所示:< / p>
initialValue(val) {
return TextEditingController(text: val);
}
然后,将此函数设置为TextInput
的控制器,并在其中提供其初始值,如下所示:
controller: initialValue('Some initial value here....')
您可以对其他TextInput
重复此操作。
答案 4 :(得分:2)
您不必在小部件范围内定义单独的变量,只需内联即可:
import 'dart:convert';
import 'package:http/http.dart';
fetchDataByPost() async {
Map<String, dynamic> body = {'id': 222, 'name': 'aam'};
String jsonBody = json.encode(body);
final encoding = Encoding.getByName('utf-8');
final header = {'Content-Type': 'application/json'};
Response response = await post(
widget.url + "login",
headers: header,
body: jsonBody,
encoding: encoding,
);
int statusCode = response.statusCode;
String responseBody = response.body;
}
答案 5 :(得分:1)
class _YourClassState extends State<YourClass> {
TextEditingController _controller = TextEditingController();
@override
void initState() {
super.initState();
_controller.text = 'Your message';
}
@override
Widget build(BuildContext context) {
return Container(
color: Colors.white,
child: TextFormField(
controller: _controller,
decoration: InputDecoration(labelText: 'Send message...'),
),
);
}
}
答案 6 :(得分:0)
内部课程
final usernameController = TextEditingController(text: 'bhanuka');
文本字段
child: new TextField(
controller: usernameController,
...
)
答案 7 :(得分:0)
TextEdittingController _controller = new TextEdittingController(text: "your Text");
或
@override
void initState() {
super.initState();
_Controller.text = "Your Text";
}
答案 8 :(得分:0)
这可以使用TextEditingController实现 1.要获得初始值,您可以添加
TextEditingController _controller = TextEditingController(text: 'initial value');
或 如果您使用的是TextFormField,则那里有一个initialValue属性。基本上,它会自动将这个initialValue提供给控制器。
TextEditingController _controller = TextEditingController();
TextFormField(
controller: _controller,
initialValue: 'initial value'
)
2。要清除文字,您可以使用
_controller.clear()
方法
答案 9 :(得分:0)
我在这里已经看到了许多方法。但是,我认为这比其他答案更有效或更简洁。
TextField(
controller: TextEditingController(text: "Initial Text here"),
)
答案 10 :(得分:0)
您可以执行上述所有操作,但是,如果您希望 API 在加载数据时显示您的数据,它会像个人资料页面一样显示。所以这是代码:
TextEditingController _nameController = TextEditingController(); // initialize the controller
// when API gets the data, do this:
_nameController.text = response.data.fullName; or _nameController.text = "Apoorv Pandey"
我希望它清除一切。快乐编码!
答案 11 :(得分:-1)
简单高效的方法
将控制器分配给您的 TextFormField
或 TextField
,在 initState
中,您可以像这样将其初始化为初始值
_controller = TextEditingController(text: 'Your initial value');
答案 12 :(得分:-12)
如果您还没有找到答案以及那些来这里寻找答案的人:查看InputDecoration
字段的提示文字:
new TextField(
decoration: new InputDecoration(
hintText:"My Text String."
),
...