50
votes

I'm trying to set an initial value for the text field. But I Can't set the initial value in text form field. I'm getting this error 'initialValue == null || controller == null': is not true .

code:

 Widget buildFirstName(BuildContext context) {
 valueBuilder = valueBuild();

return TextFormField(
  controller: firstNameController,
  initialValue: valueBuilder,
  decoration: InputDecoration(
    hintText: "Enter Name",
    fillColor: Colors.white,
    hintStyle: TextStyle(
        color: Color.fromRGBO(0, 0, 0, 1.0),
        fontFamily: "SFProText-Regular"),
  ),
  validator: validatingName,
);

}

1
You can't have both an initialValue and a controller - Rémi Rousselet
Then how to set initial value and how can I track the value entered by the user in the field - Dinesh
just using a TextEditingController :), but you can't use both (initialValue + controller) - diegoveloper
you can set an initial value in your TextEditingController when its constructor is created - swati kapoor

1 Answers

122
votes

You can't use initialValue and controller at the same time. So, a better way is to use controller because its constructor does provide you initial value that you can set.

Here is an example.

// In class level 
final controller = TextEditingController(text: "Your initial value");

Widget build(BuildContext context) {
  return TextFormField(
    controller: controller, 
    // ...
  );
}

In order to track the value entered by the user you can then use

controller.text