我想为文本字段提供一个初始值,并重新绘制一个空值以清除文本。用Flutter的api实现这一点的最佳方法是什么?
当前回答
如果你正在使用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
其他回答
如果你想处理多个textinput,因为@MRT在接受的答案的评论中要求,你可以创建一个函数,接受一个初始值,并返回一个TextEditingController,像这样:
initialValue(val) {
return TextEditingController(text: val);
}
然后,将这个函数设置为TextInput的控制器,并像这样提供它的初始值:
controller: initialValue('Some initial value here....')
您可以为其他textinput重复此操作。
TextEdittingController _controller = new TextEdittingController(text: "your Text");
or
@override
void initState() {
super.initState();
_Controller.text = "Your Text";
}
由于没有一个答案提到它,TextEditingController应该在使用后被丢弃。如:
class MyWidget extends StatefulWidget {
const MyWidget({Key? key}) : super(key: key);
@override
MyWidgetState createState() => MyWidgetState();
}
class MyWidgetState extends State<MyWidget> {
final myController = TextEditingController(text: "Initial value");
@override
Widget build(BuildContext context) {
return TextField(
controller: myController,
);
}
@override
void dispose() {
// dispose it here
myController.dispose();
super.dispose();
}
}
如果你正在使用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
这可以通过使用TextEditingController来实现。
要有一个初始值,你可以加上
TextEditingController _controller = TextEditingController(text: 'initial value');
or
如果你正在使用TextFormField,你有一个initialValue属性。它基本上自动地将这个initialValue提供给小部件。
TextFormField(
initialValue: 'initial value'
)
清除文本可以使用 _controller.clear()方法。