Eu tenho um textfield
e estou usando sqflite
banco de dados no meu aplicativo. O sqflite
tem um valor que eu preciso atribuir ao meutextfield
Aqui está o meu textfield
código
StreamBuilder<String>(
stream: patientHealthFormBloc.doctorName,
builder: (context, snapshot) {
return TextFormField(
initialValue: patientHealthFormBloc.doctorNameValue,
onChanged: (value) {
patientHealthFormBloc.doctorNameChanged(value);
},
...
Agora, no initstate
método da minha classe, estou buscando valor do banco de dados. Sendo uma operação assíncrona, leva tempo.
Minha classe de bloco tem um código como segue
Function(String) get doctorNameChanged => _doctorName.sink.add;
Então, assim que eu receber valor do banco de dados eu chamo a seguir
doctorNameChanged("valuefromdatabase");
mas não consigo ver o valor no meu campo de texto. Também há um valor presente no meu banco de dados. É possível atualizar o valor sem usar TextEditingController
ou setState
. I ma tentando evitar aqueles como a minha turma é dividida em lote de chuncks e muito complicado de usar qualquer um dos acima Eu tentei usar mesma abordagem RadioButton
e CheckBox
e eles parecem atualizar corretamente. O valor também é atualizado, no _doctorName.stream.value
qual está presente no banco de dados, mas textfield
não mostra nenhum dado. Também tentei mudar de cor textfield
para que não haja problema lá, assim como eu sou capaz de ver o que digito.
Fiz uma pequena demonstração do aplicativo https://github.com/PritishSawant/demo/tree/master/lib
Em vez de usar sqflite
, estou usando, shared preferences
mas o problema persiste
Respostas:
OK, então finalmente encontrei a solução para o meu problema.
A seguir, é apresentado o meu código, que acabei de usar em
SharedPreferences
vez dosqflite
exemplo abaixo.sqflite
fonte
Tente a seguinte abordagem:
entre em contato se precisar de mais ajuda.
fonte
builder: (context, snapshot)
?O que estava sugerindo nos meus comentários era algo assim:
Eu não queria escrever esta resposta sem entender por que você não queria usar um TextEditingController ou um setState. Mas isso deve alcançar o que você deseja ao usar o padrão Bloc.
fonte
TextEditController
, então raspei essa ideia. É ótimo que apenas usando o controlador a solução se torne simples e pequena para funcionar com precisão. Bom trabalho.