我想为文本字段提供一个初始值,并重新绘制一个空值以清除文本。用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