j'ai un textfield
etsqflite
base de données dans mon application. Le sqflite
a une valeur que je dois attribuer à montextfield
Voici mon textfield
code
StreamBuilder<String>(
stream: patientHealthFormBloc.doctorName,
builder: (context, snapshot) {
return TextFormField(
initialValue: patientHealthFormBloc.doctorNameValue,
onChanged: (value) {
patientHealthFormBloc.doctorNameChanged(value);
},
...
Maintenant dans le initstate
méthode de ma classe, je récupère la valeur de la base de données. Il s'agit d'une opération asynchrone donc cela prend du temps.
Ma classe de bloc a un code comme suit
Function(String) get doctorNameChanged => _doctorName.sink.add;
donc dès que je reçois de la valeur de la base de données j'appelle suivant
doctorNameChanged("valuefromdatabase");
mais je ne peux pas voir la valeur dans mon champ de texte. Il y a aussi une valeur présente dans ma base de données. Est-il possible de mettre à jour la valeur sans utiliser TextEditingController
ou setState
. I ma essayant d'éviter ceux que ma classe est divisée en beaucoup de chuncks et trop compliqué à utiliser tout de ce qui précède , je l' ai essayé d' utiliser même approche avec RadioButton
et CheckBox
et ils semblent mettre à jour correctement. La valeur est également mise à jour dans _doctorName.stream.value
laquelle est présente dans la base de données mais textfield
n'affiche aucune donnée. J'ai également essayé de changer la couleur de textfield
donc il n'y a pas de problème et je peux voir ce que je tape.
J'ai fait une petite démo de l'application https://github.com/PritishSawant/demo/tree/master/lib
Au lieu d'utiliser sqflite
, j'utilise shared preferences
mais le problème persiste