Skip to content

TextField doesn't properly create a new TextEditingController on didUpdateWidget #12153

@paolosoares

Description

@paolosoares

In TextEditingController's didUpdateWidget method:

  @override
  void didUpdateWidget(TextField oldWidget) {
    super.didUpdateWidget(oldWidget);
    if (widget.controller == null && oldWidget.controller != null)
      _controller == new TextEditingController.fromValue(oldWidget.controller.value);
    else if (widget.controller != null && oldWidget.controller == null)
      _controller = null;
  }

When widget.controller is null and oldWidget.controller isn't, _controller gets assigned instead of copied. Specifically, this:

_controller == new TextEditingController.fromValue(oldWidget.controller.value);

should be

_controller = new TextEditingController.fromValue(oldWidget.controller.value);

Metadata

Metadata

Assignees

Labels

a: text inputEntering text in a text field or keyboard related problemsframeworkflutter/packages/flutter repository. See also f: labels.

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions