Tengo una textfield
y estoy usando la sqflite
base de datos en mi aplicación. El sqflite
tiene un valor que necesito para asignar a mitextfield
Aqui esta mi textfield
codigo
StreamBuilder<String>(
stream: patientHealthFormBloc.doctorName,
builder: (context, snapshot) {
return TextFormField(
initialValue: patientHealthFormBloc.doctorNameValue,
onChanged: (value) {
patientHealthFormBloc.doctorNameChanged(value);
},
...
Ahora en el initstate
método de mi clase, estoy obteniendo valor de la base de datos. Al ser una operación asincrónica, lleva tiempo.
Mi clase de bloque tiene un código como el siguiente
Function(String) get doctorNameChanged => _doctorName.sink.add;
tan pronto como recibo el valor de la base de datos, llamo a continuación
doctorNameChanged("valuefromdatabase");
pero no puedo ver el valor en mi campo de texto. También hay un valor presente en mi base de datos. ¿Es posible actualizar el valor sin usar TextEditingController
o setState
? I m tratando de evitar aquellos como mi clase se divide en muchos de los desconchados y demasiado complicado de utilizar cualquiera de los anteriores He intentado usar mismo enfoque con RadioButton
y CheckBox
y parece que actualizar correctamente. El valor también se actualiza en el _doctorName.stream.value
que está presente en la base de datos pero textfield
no muestra ningún dato. También intenté cambiar el color de textfield
modo que no haya ningún problema allí, así como puedo ver lo que escribo.
Hice una pequeña demostración de la aplicación https://github.com/PritishSawant/demo/tree/master/lib
En lugar de usar sqflite
, estoy usando shared preferences
pero el problema persiste
Respuestas:
OK, así que finalmente encontré la solución a mi problema.
El siguiente es mi código, que acabo de usar en
SharedPreferences
lugar delsqflite
siguiente ejemplo. Lo mismo se puede hacer consqflite
fuente
Pruebe el siguiente enfoque:
dejame saber si necesitas mas ayuda.
fuente
builder: (context, snapshot)
?Lo que sugería en mis comentarios era algo como esto:
No quería escribir esta respuesta sin entender por qué no quería usar un TextEditingController o un setState. Pero esto debería lograr lo que desea mientras usa el patrón Bloc.
fuente
TextEditController
, entonces descarté esa Idea. Es genial que solo al usar el controlador la solución se vuelva simple y pequeña para trabajar con precisión. Gran trabajo.