我想为文本字段提供一个初始值,并重新绘制一个空值以清除文本。用Flutter的api实现这一点的最佳方法是什么?


当前回答

我在这里见过很多方法。然而,我认为这比其他答案更有效或至少更简洁。

TextField(
   controller: TextEditingController(text: "Initial Text here"),
)

其他回答

当你使用TextEditingController

如果使用TextEditingController,请将其文本字段设置为所需的值

TextEditingController txtController = TextEditingController()..text = 'Your initial text value'; 
TextField( controller: txtController ..... ) 

当你不使用TextEditingController

如果你没有使用texteditingcontroller,直接从TextField小部件使用initialValue字段:

TextFormField( initialValue: "Your initial text value" )

你不需要在小部件范围内定义一个单独的变量,只需内联即可:

TextField(
  controller: TextEditingController()..text = 'Your initial value',
  onChanged: (text) => {},
)

我在这里见过很多方法。然而,我认为这比其他答案更有效或至少更简洁。

TextField(
   controller: TextEditingController(text: "Initial Text here"),
)

至于上述答案都是正确的,但有一件事是缺失的,我想添加到它是如何自定义TextFormField的默认文本的风格。

TextEditingController textController = TextEditingController(text: '4');

 TextFormField(
    controller: textController,
     // This style property will customize the default controller text
    style: TextStyle(
    color: Colors.white,
    fontSize: 18,
    fontWeight: FontWeight.bold,
   ),
    ),

对于这种情况,我更喜欢使用TextEditingController而不是initialValue,因为如果你想改变它以后或修改它,那么textController将不断监听你的TextFormField输入的变化。 这是我个人的观点,如果我错了请告诉我。

你可以做以上所有的事情,但如果你想让API在加载时显示你的数据,它会像配置文件页面一样显示。下面是代码:

TextEditingController _nameController = TextEditingController(); // initialize the controller
 // when API gets the data, do this:
 _nameController.text = response.data.fullName; or _nameController.text = "Apoorv Pandey"

我希望这能澄清一切。编码快乐!