【发布时间】:2020-04-21 01:22:59
【问题描述】:
我有一个textfield,我在我的应用程序中使用sqflite 数据库。 sqflite 有一个值,我需要分配给我的textfield
这是我的textfield 代码
StreamBuilder<String>(
stream: patientHealthFormBloc.doctorName,
builder: (context, snapshot) {
return TextFormField(
initialValue: patientHealthFormBloc.doctorNameValue,
onChanged: (value) {
patientHealthFormBloc.doctorNameChanged(value);
},
...
现在在我班级的initstate 方法中,我正在从数据库中获取值。
这是一个异步操作,所以需要时间。
我的 bloc 类有如下代码
Function(String) get doctorNameChanged => _doctorName.sink.add;
所以一旦我从数据库中收到值,我就会调用以下内容
doctorNameChanged("valuefromdatabase");
但我看不到我的文本字段中的值。我的数据库中也存在一个值。
是否可以在不使用TextEditingController 或setState 的情况下更新值。我想避免这些,因为我的班级被分成很多块,而且太复杂而无法使用上述任何一种
我尝试对RadioButton 和CheckBox 使用相同的方法,它们似乎可以正确更新。
该值也在数据库中存在的_doctorName.stream.value 中更新,但textfield 不显示任何数据。我还尝试更改textfield 的颜色,所以那里没有问题,而且我可以看到我输入的内容。
我已经做了一个应用程序的小演示https://github.com/PritishSawant/demo/tree/master/lib
我没有使用sqflite,而是使用shared preferences,但问题仍然存在
【问题讨论】:
-
尝试删除“initialValue: patientHealthFormBloc.doctorNameValue”,并在 StreamBuilder 的“initialData”中启动它
-
@Stel 谢谢,但不起作用
-
你可以使用 TextEditingController(text: )
-
@ChinkySight 我正在使用 Stream 来避免 TextEditingController。应用复杂,使用TextEditingController不可行
-
在您的示例中,您根本没有使用快照。您希望从中提取哪些数据以在您的 TextFormField 中使用?为什么不能使用 TextEditingController?
标签: flutter dart textfield sqflite rxdart