Bagaimana cara memberikan nilai awal untuk text field?

I'd ingin memberikan nilai awal untuk bidang teks dan redraw itu dengan nilai kosong untuk menghapus teks. Apa's pendekatan yang terbaik untuk melakukan itu dengan Bergetar's Api?

(Dari milis. Aku't datang dengan jawaban ini.)

class _FooState extends State {
  TextEditingController _controller;

  @override
  void initState() {
    super.initState();
    _controller = new TextEditingController(text: 'Initial value');
  }

  @override
  Widget build(BuildContext context) {
    return new Column(
      children: [
        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'),
        ),
      ],
    );
  }
}
Komentar (4)

Anda dapat menggunakan TextFormField bukan TextField, dan menggunakan initialValue properti. misalnya

TextFormField(initialValue: "I am smart")
Komentar (5)

Jika anda menggunakan TextEditingController kemudian mengatur teks seperti di bawah ini

TextEditingController _controller = new TextEditingController();

_controller.text = 'your initial text';

final your_text_name = TextFormField(
      autofocus: false,
      controller: _controller,
      decoration: InputDecoration(
        hintText: 'Hint Value',
      ),
    );

dan jika anda tidak menggunakan TextEditingController maka anda dapat langsung menggunakan initialValue seperti di bawah ini

final last_name = TextFormField(
      autofocus: false,
      initialValue: 'your initial text',
      decoration: InputDecoration(
        hintText: 'Last Name',
      ),
    );

Untuk lebih lanjut referensi TextEditingController

Komentar (1)

Anda don't harus mendefinisikan variabel terpisah di widget lingkup, lakukan saja inline:

TextField(
  controller: TextEditingController()..text = 'Your initial value',
  onChanged: (text) => {},
)
Komentar (3)

Jika anda ingin menangani beberapa TextInput ini seperti yang diminta oleh @MRT di komentar dengan jawaban yang diterima, anda dapat membuat fungsi yang mengambil nilai awal dan kembaliTextEditingController` seperti ini:

initialValue(val) {
  return TextEditingController(text: val);
}

Kemudian, set ini berfungsi sebagai controller untuk TextInput dan pasokan nilai awal ada seperti ini:

controller: initialValue('Some initial value here....')

Anda bisa mengulang ini untuk yang lain `TextInput ini.

Komentar (0)

di dalam kelas,

  final usernameController = TextEditingController(text: 'bhanuka');

TextField,

   child: new TextField(
        controller: usernameController,
    ...
)
Komentar (0)
TextEdittingController _controller = new TextEdittingController(text: "your Text");

atau

@override
  void initState() {
    super.initState();
    _Controller.text = "Your Text";
    }
Komentar (0)

Hal ini dapat dicapai dengan menggunakan TextEditingController

  1. Untuk memiliki sebuah nilai awal anda dapat menambahkan

TextEditingController _controller = TextEditingController(teks: 'nilai awal'); atau Jika anda menggunakan TextFormField anda memiliki initialValue properti di sana. Yang pada dasarnya menyediakan ini initialValue ke controller secara otomatis.

TextEditingController _controller = TextEditingController(); TextFormField( controller: _controller, initialValue: 'nilai awal' ) 2. Untuk menghapus teks anda dapat menggunakan _controller.jelas() metode

Komentar (0)

Jika anda belum't menemukan jawaban untuk ini dan untuk orang-orang yang datang ke sini mencari jawaban: Checkout InputDecoration field's hintText:

new TextField(
  decoration: new InputDecoration(
    hintText:"My Text String."
  ),
...
Komentar (3)