ฉันต้องการระบุค่าเริ่มต้นให้กับช่องข้อความและวาดใหม่ด้วยค่าว่างเพื่อล้างข้อความ วิธีที่ดีที่สุดในการใช้ API ของ Flutter คืออะไร
ฉันต้องการระบุค่าเริ่มต้นให้กับช่องข้อความและวาดใหม่ด้วยค่าว่างเพื่อล้างข้อความ วิธีที่ดีที่สุดในการใช้ API ของ Flutter คืออะไร
คำตอบ:
(จากรายชื่อส่งเมลฉันไม่ได้คำตอบนี้)
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 นี้ทราบว่าพวกเขาจำเป็นต้องอัปเดต (เรียกว่า alertListeners) ด้วยเหตุนี้ควรกำหนดค่านี้ระหว่างเฟรมเท่านั้นเช่นเพื่อตอบสนองต่อการกระทำของผู้ใช้ไม่ใช่ระหว่างขั้นตอนการสร้างเค้าโครงหรือขั้นตอนการระบายสี ( api.flutter.dev/flutter/widgets/TextEditingController/text.html )
ฉันเห็นหลายวิธีในการทำสิ่งนี้ที่นี่ อย่างไรก็ตามฉันคิดว่านี่มีประสิทธิภาพมากกว่าหรืออย่างน้อยก็รวบรัดกว่าคำตอบอื่น ๆ
TextField(
controller: TextEditingController(text: "Initial Text here"),
)
หากคุณต้องการจัดการหลายตัวTextInput
ตามที่ @MRT ถามในความคิดเห็นสำหรับคำตอบที่ยอมรับคุณสามารถสร้างฟังก์ชันที่รับค่าเริ่มต้นและส่งกลับค่า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()
วิธีการ
ภายในชั้นเรียน
final usernameController = TextEditingController(text: 'bhanuka');
ช่องข้อความ,
child: new TextField(
controller: usernameController,
...
)
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."
),
...