我想为文本字段提供一个初始值,并重新绘制一个空值以清除文本。用Flutter的api实现这一点的最佳方法是什么?
当前回答
当你使用TextEditingController
如果使用TextEditingController,请将其文本字段设置为所需的值
TextEditingController txtController = TextEditingController()..text = 'Your initial text value';
TextField( controller: txtController ..... )
当你不使用TextEditingController
如果你没有使用texteditingcontroller,直接从TextField小部件使用initialValue字段:
TextFormField( initialValue: "Your initial text value" )
其他回答
如果你想处理多个textinput,因为@MRT在接受的答案的评论中要求,你可以创建一个函数,接受一个初始值,并返回一个TextEditingController,像这样:
initialValue(val) {
return TextEditingController(text: val);
}
然后,将这个函数设置为TextInput的控制器,并像这样提供它的初始值:
controller: initialValue('Some initial value here....')
您可以为其他textinput重复此操作。
如果你使用TextEditingController只需要在你的类中使用这一行。
TextEditingController txtController = TextEditingController(text: 'Initial value')
TextField(
controller: txtController,
);
如果你不使用TextEditingController就去initialValue
TextFormField(
initialValue: 'your initial text',
);
完整代码
class _TestScreen extends State<Test> {
TextEditingController _controller;
@override
void initState() {
super.initState();
_controller = new TextEditingController(text: 'Initial value');
}
@override
Widget build(BuildContext context) {
return new Column(
children: <Widget>[
TextField( // First method
initialValue: "Initial text"
),
TextField( // Second method
controller: _controller, // Controller has the initial value
),
],
);
}
}
你可以使用TextFormField代替TextField,并使用initialValue属性。例如
TextFormField(initialValue: "I am smart")
这可以通过使用TextEditingController来实现。
要有一个初始值,你可以加上
TextEditingController _controller = TextEditingController(text: 'initial value');
or
如果你正在使用TextFormField,你有一个initialValue属性。它基本上自动地将这个initialValue提供给小部件。
TextFormField(
initialValue: 'initial value'
)
清除文本可以使用 _controller.clear()方法。
如果你正在使用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
推荐文章
- Flutter and google_sign_in plugin: PlatformException(sign_in_failed, com.google.android.gms.common.api.ApiException: 10:, null)
- 如何在扑动中格式化日期时间
- 在Flutter中Column的子元素之间的空间
- Visual Studio代码- URI的目标不存在" package:flutter/material.dart "
- Flutter:升级游戏商店的版本代码
- 在一个子树中有多个英雄共享相同的标签
- 如何检查Flutter应用程序是否正在调试中运行?
- 在Flutter中向有状态小部件传递数据
- 未处理异常:ServicesBinding.defaultBinaryMessenger在绑定初始化之前被访问
- 出现键盘时,Flutter小部件将调整大小。如何预防这种情况?
- 颤振-换行文本
- 如何在Dart中四舍五入到小数点后的给定精度程度?
- 添加一个启动屏幕颤振应用程序
- 在flutter中等同于wrap_content和match_parent ?
- 多行文本字段在扑动