Respostas:
(Na lista de discussão. Não encontrei esta resposta.)
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'),
),
],
);
}
}
Você pode usar um em TextFormField
vez de TextField
e usar a initialValue
propriedade por exemplo
TextFormField(initialValue: "I am smart")
Você não precisa definir uma variável separada no escopo do widget, apenas faça isso em linha:
TextField(
controller: TextEditingController()..text = 'Your initial value',
onChanged: (text) => {},
)
Se você estiver usando o TextEditingController , defina o texto para ele, como abaixo
TextEditingController _controller = new TextEditingController();
_controller.text = 'your initial text';
final your_text_name = TextFormField(
autofocus: false,
controller: _controller,
decoration: InputDecoration(
hintText: 'Hint Value',
),
);
e se você não estiver usando nenhum TextEditingController , poderá usar diretamente o valor inicial, como abaixo
final last_name = TextFormField(
autofocus: false,
initialValue: 'your initial text',
decoration: InputDecoration(
hintText: 'Last Name',
),
);
Para mais referência: TextEditingController
text
propriedade como por docs de TextEditingController.text
propriedade: Definir este irá notificar todos os ouvintes desta TextEditingController que precisam de atualização (que chama notifyListeners). Por esse motivo, esse valor deve ser definido apenas entre os quadros, por exemplo, em resposta às ações do usuário, não durante as fases de construção, layout ou pintura. ( api.flutter.dev/flutter/widgets/TextEditingController/text.html )
Se você deseja manipular vários TextInput
s, conforme solicitado por @MRT no comentário da resposta aceita, você pode criar uma função que use um valor inicial e retorne TextEditingController
assim:
initialValue(val) {
return TextEditingController(text: val);
}
Em seguida, defina esta função como controlador para TextInput
e forneça seu valor inicial como este:
controller: initialValue('Some initial value here....')
Você pode repetir isso para os outros TextInput
s.
Isso pode ser alcançado usando TextEditingController
.
Para ter um valor inicial, você pode adicionar
TextEditingController _controller = TextEditingController(text: 'initial value');
ou
Se você estiver usando, TextFormField
você tem uma initialValue
propriedade lá. O que basicamente fornece isso initialValue
ao controlador automaticamente.
TextEditingController _controller = TextEditingController();
TextFormField(
controller: _controller,
initialValue: 'initial value'
)
Para limpar o texto, você pode usar o
_controller.clear()
método
dentro da classe,
final usernameController = TextEditingController(text: 'bhanuka');
Campo de texto,
child: new TextField(
controller: usernameController,
...
)
TextEdittingController _controller = new TextEdittingController(text: "your Text");
ou
@override
void initState() {
super.initState();
_Controller.text = "Your Text";
}
Se você não encontrou a resposta para isso e para os que vêm aqui procurando uma resposta: InputDecoration
Confira a dica do campo
new TextField(
decoration: new InputDecoration(
hintText:"My Text String."
),
...