snapshot.data 在流构建器中返回 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
);
}
}

更新:它没有返回空值。我尝试收到错误消息。该消息显示" '类型'列表'不是类型'列表'的子类型"。

根据您的注释,您将需要编辑方法_ratesDataFromSnapshot以处理非原始数据类型和空值(如果返回的数据没有您尝试读取的字段(

snapshot.data['field'].cast<String>().toList() ?? List() // handle the null case as well with empty list    

存在格式问题,您缺少 if 语句周围的 {} 大括号 在下面尝试

if (!snapshot.hasData(//没有摆脱这种情况并继续加载。 {return LoadLogin((;}

最新更新