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 TextFormFieldvez de TextFielde usar a initialValuepropriedade 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
textpropriedade como por docs de TextEditingController.textpropriedade: 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 TextInputs, conforme solicitado por @MRT no comentário da resposta aceita, você pode criar uma função que use um valor inicial e retorne TextEditingControllerassim:
initialValue(val) {
return TextEditingController(text: val);
}
Em seguida, defina esta função como controlador para TextInpute forneça seu valor inicial como este:
controller: initialValue('Some initial value here....')
Você pode repetir isso para os outros TextInputs.
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, TextFormFieldvocê tem uma initialValuepropriedade lá. O que basicamente fornece isso initialValueao 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: InputDecorationConfira a dica do campo
new TextField(
decoration: new InputDecoration(
hintText:"My Text String."
),
...