답변:
(메일 링리스트에서. 나는이 답변을 찾지 못했습니다.)
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가 요청 한대로 여러 s 를 처리 하려면 초기 값을 가져 와서 다음 TextEditingController
과 같이 반환하는 함수를 만들 수 있습니다 .
initialValue(val) {
return TextEditingController(text: val);
}
그런 다음이 기능을 컨트롤러로 설정하고 다음 TextInput
과 같이 초기 값을 제공하십시오.
controller: initialValue('Some initial value here....')
다른 TextInput
s에 대해서도이 작업을 반복 할 수 있습니다 .
이것은를 사용하여 달성 할 수 있습니다 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
필드의 힌트 텍스트를 확인하십시오.
new TextField(
decoration: new InputDecoration(
hintText:"My Text String."
),
...