firebase - snapshot.data 在 streambuilder 中返回 null 但在我返回带有快照数据的数据模型之前显示正确的值
问题描述
这是我的流生成器的代码。
StreamBuilder<RatesData>(
stream: DatabaseRatesService(fid: fid).ratesData,
builder: (context, snapshot) {
if (!snapshot.hasData) // Doesn't get off from this condition and keeps loading.
return LoadingLogin(); // A simple loading widget
RatesData ratesData = snapshot.data;
print(ratesData.fid);
return Column(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
Container(
height: 50,
child: Text(
ratesData.fid,
style: TextStyle(color: Colors.black),
),
),
],
);
}
)
这是我拥有所有数据库查询的类。我似乎已成功从 firebase 获取数据,但它没有显示在我的流生成器中。我怀疑数据没有注入到我创建的数据模型中,但不知道如何注入。
class DatabaseRatesService{
final String fid;
DatabaseRatesService({this.fid});
DocumentReference get(){
return Firestore.instance.collection('rates').document(fid);}
RatesData _ratesDataFromSnapshot(DocumentSnapshot snapshot){
print(snapshot.data); // I put this here for testing purposes / it returns correct data here
return RatesData(
firstHourWeekday: snapshot.data['FirstHourWeekday'],
firstHourWeekend: snapshot.data['FirstHourWeekend'],
fid: fid,
ratesWeekday: snapshot.data['RatesWeekday'],
ratesWeekend: snapshot.data['RatesWeekend'],
);
}
Stream<RatesData> get ratesData {
DocumentReference ratesDocument = get();
return ratesDocument.snapshots()
.map(
_ratesDataFromSnapshot
);
}
}
更新:它没有返回空值。我尝试收到错误消息。消息显示“'type 'List' 不是 type 'List' 的子类型”。
解决方案
存在格式问题,您在下面的 if 语句中缺少 {} 大括号
if (!snapshot.hasData) // 不会脱离这种情况并继续加载。{返回加载登录();}
推荐阅读
- ruby-on-rails - 在 PSQL 或 .... 中存储 LARGE PDF?
- typescript - 是否可以编写一个通用的 enum-member-name getter?
- angular - 打字稿/角度不是函数错误
- python - xlsxwriter:将 'xl_col_to_name(col)' 解析为 worksheet.set_column() 中使用的值
- css - 将鼠标悬停在背景 DIV (CSS) 上时更改按钮颜色
- java - Apache POI 自动调整大小功能不适用于换行文本(新行)
- junit - 在 SEQUENTIAL 模式下运行功能和场景时如何处理空手道结果,而不是在空手道中并行
- python - 将第一个元素移动到 Numpy 数组的结尾
- ios - 现在在 Xcode 中切换选项卡的快捷方式?
- python - 如何创建一个从给定的任何文本文件中读取的程序?