Flutter Keyboard показать / закрыть вызвать перестройку виджета? - PullRequest
1 голос
/ 26 мая 2019

У меня есть экран, который содержит Form с StreamBuilder, когда я загружаю исходные данные из StreamBuilder, TextFormField показывает данные, как ожидалось. Когда я нажимаю на TextFormField, на клавиатуре появляется виджет, чтобы перестроить виджет, затем снова, после редактирования, клавиатура отключается, поэтому снова происходит перестройка виджета, и когда перестройка виджета StreamBuilder снова подписывается, а значения текстового поля заменяются начальными значениями.

Вот мой код

  Widget _formUI() {

    return StreamBuilder<ConcreteEstimationForm>(
        stream: _bloc.inputObservable(),
        builder: (context, AsyncSnapshot<ConcreteEstimationForm> snapshot) {
          if (snapshot.hasData) {
            ConcreteEstimationForm form = snapshot.data;
            _descriptionController.text = form.description;
            return Column(
              children: <Widget>[
                TextFormField(
                  decoration: const InputDecoration(labelText: "Description"),
                  keyboardType: TextInputType.text,
                  validator: _descriptionValidator,
                  controller: _descriptionController,
                  onSaved: (String value) {
                    _description = value;
                  },
                ),
                ],
            );
          } else {
            return new Center(
              child: new CircularProgressIndicator(),
            );
          }
        });
  }

Кто-нибудь сталкивался с этой проблемой? Как это решить?

Спасибо.

...