У меня есть, 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
. Я ма пытаюсь избежать тех , как мой класса делится на много chuncks и слишком сложен , чтобы использовать любого из вышеперечисленного я попытался использовать тот же подход , с RadioButton
и CheckBox
и они , кажется , чтобы обновить должным образом. Также обновляется значение, в _doctorName.stream.value
котором присутствует в базе данных, но textfield
не показывает никаких данных. Кроме того, я попытался изменить цвет, textfield
так что нет проблем, так как я могу видеть, что я печатаю.
Я сделал небольшую демонстрацию приложения https://github.com/PritishSawant/demo/tree/master/lib
Вместо того, чтобы использовать sqflite
, я использую, shared preferences
но проблема сохраняется
Ответы:
Итак, я наконец нашел решение своей проблемы.
Ниже приведен мой код, который я только что использовал
SharedPreferences
вместоsqflite
приведенного ниже примера. То же самое можно сделать с помощьюsqflite
источник
Попробуйте следующий подход:
Дай мне знать, если тебе еще понадобится помощь.
источник
builder: (context, snapshot)
?То, что предлагалось в моих комментариях, было примерно таким:
Я не хотел писать этот ответ, не понимая, почему вы не хотите использовать TextEditingController или setState. Но это должно достичь того, что вы хотите при использовании шаблона Bloc.
источник
TextEditController
, чтобы не использовать , поэтому я отказался от этой идеи. Замечательно, что только с помощью контроллера решение становится простым и маленьким для точной работы. Отличная работа.