回答:
(メーリングリストから。この答えは思いつきませんでした。)
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'),
),
],
);
}
}
のTextFormField
代わりにTextField
を使用して、initialValue
プロパティを使用できます。例えば
TextFormField(initialValue: "I am smart")
ウィジェットスコープで別の変数を定義する必要はありません。インラインで定義するだけです。
TextField(
controller: TextEditingController()..text = 'Your initial value',
onChanged: (text) => {},
)
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
text
プロパティのドキュメントに従って初期値をプロパティに設定するのが良い考えかどうかTextEditingController.text
はわかりません:これを設定すると、このTextEditingControllerのすべてのリスナーに更新が必要であることを通知します(notifyListenersを呼び出します)。このため、この値はフレーム間でのみ設定する必要があります。たとえば、ビルド、レイアウト、またはペイントフェーズではなく、ユーザーアクションへの応答として。(api.flutter.dev/flutter/widgets/TextEditingController/text.html)
TextInput
受け入れられた回答へのコメントで@MRTによって要求された複数のを処理する場合は、初期値を取得して次のTextEditingController
ようなものを返す関数を作成できます。
initialValue(val) {
return TextEditingController(text: val);
}
次に、この関数をのコントローラーとして設定し、TextInput
その初期値を次のように指定します。
controller: initialValue('Some initial value here....')
これを他TextInput
のに対して繰り返すことができます。
これはを使用して実現できますTextEditingController
。
追加できる初期値を持つために
TextEditingController _controller = TextEditingController(text: 'initial value');
または
使用しTextFormField
ている場合は、initialValue
プロパティがあります。これは基本的にこれinitialValue
をコントローラーに自動的に提供します。
TextEditingController _controller = TextEditingController();
TextFormField(
controller: _controller,
initialValue: 'initial value'
)
テキストをクリアするには、_controller.clear()
メソッドを使用できます
。
TextEdittingController _controller = new TextEdittingController(text: "your Text");
または
@override
void initState() {
super.initState();
_Controller.text = "Your Text";
}
これに対する回答が見つからない場合、およびここに来て回答を探しているInputDecoration
場合:フィールドのhintTextを確認してください。
new TextField(
decoration: new InputDecoration(
hintText:"My Text String."
),
...