Mam textfield
i używam sqflite
bazy danych w mojej aplikacji. Thesqflite
Ma wartość, którą muszę przypisać do mojegotextfield
Oto mój textfield
kod
StreamBuilder<String>(
stream: patientHealthFormBloc.doctorName,
builder: (context, snapshot) {
return TextFormField(
initialValue: patientHealthFormBloc.doctorNameValue,
onChanged: (value) {
patientHealthFormBloc.doctorNameChanged(value);
},
...
Teraz w initstate
metodzie mojej klasy pobieram wartość z bazy danych. Jest to operacja asynchroniczna, więc wymaga czasu.
Moja klasa blokowa ma następujący kod
Function(String) get doctorNameChanged => _doctorName.sink.add;
więc jak tylko otrzymam wartość z bazy danych, wywołuję następujące
doctorNameChanged("valuefromdatabase");
ale nie widzę wartości w moim polu tekstowym. W mojej bazie danych jest także wartość. Czy można zaktualizować wartość bez użycia TextEditingController
lub setState
. MA I starają się unikać tych, jak moja klasa jest podzielona na wiele chuncks i zbyt skomplikowane, aby użyć dowolnego z powyższych Próbowałem, używając tego samego podejścia z RadioButton
a CheckBox
i wydają się poprawnie zaktualizować. Wartość jest również aktualizowana, w _doctorName.stream.value
której jest obecna w bazie danych, ale textfield
nie pokazuje żadnych danych. Próbowałem też zmienić kolortextfield
więc nie ma problemu, a także mogę zobaczyć, co wpisuję.
Zrobiłem małe demo aplikacji https://github.com/PritishSawant/demo/tree/master/lib
Zamiast używać sqflite
, używam, shared preferences
ale problem nadal występuje