У меня есть textfield
, и я использую sqflite
базу данных в своем приложении. sqflite
имеет значение, которое мне нужно присвоить моему textfield
Вот мой textfield
код
StreamBuilder<String>(
stream: patientHealthFormBloc.doctorName,
builder: (context, snapshot) {
return TextFormField(
initialValue: patientHealthFormBloc.doctorNameValue,
onChanged: (value) {
patientHealthFormBloc.doctorNameChanged(value);
},
...
Теперь в методе initstate
моего класса я получаю значение из базы данных. Это асинхронная операция, поэтому на нее нужно время.
В моем классе блока есть следующий код
Function(String) get doctorNameChanged => _doctorName.sink.add;
поэтому, как только я получаю значение из базы данных, я вызываю следующие
doctorNameChanged("valuefromdatabase");
но я не вижу значения в своем текстовом поле. Также в моей базе данных есть значение. Можно ли обновить значение без использования TextEditingController
или setState
. Я пытаюсь избежать этого, поскольку мой класс разделен на множество фрагментов и слишком сложен, чтобы использовать что-либо из вышеперечисленного. Я пробовал использовать тот же подход с RadioButton
и CheckBox
, и они, похоже, обновляются правильно. Значение также обновляется в _doctorName.stream.value
, который присутствует в базе данных, но textfield
не показывает никаких данных. Также я попытался изменить цвет textfield
, поэтому проблем нет, и я могу видеть, что я набираю.
Я сделал небольшую демонстрацию приложения https://github.com/PritishSawant/demo/tree/master/lib
Вместо sqflite
я использую shared preferences
, но проблема не устранена