У меня есть экран, который содержит 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(),
);
}
});
}
Кто-нибудь сталкивался с этой проблемой?
Как это решить?
Спасибо.