在Firebase中查询文档时发生范围错误
我正在尝试使用以下方法查询Firebase中的数据:在Firebase中查询文档时发生范围错误,firebase,flutter,firebase-realtime-database,dart,Firebase,Flutter,Firebase Realtime Database,Dart,我正在尝试使用以下方法查询Firebase中的数据: static Future<QuerySnapshot> getUserData(String creatorId) { Future<QuerySnapshot> data = _firestore .collection('users') .where('creatorId', isEqualTo: creatorId) .getDocuments();
static Future<QuerySnapshot> getUserData(String creatorId) {
Future<QuerySnapshot> data = _firestore
.collection('users')
.where('creatorId', isEqualTo: creatorId)
.getDocuments();
return data;
}
始终只有一个用户具有相同的创建者ID。这就是我在[0]上调用文档的原因
当我点击调用FutureBuilder的按钮时,会出现以下异常:
════════ Exception caught by widgets library ═══════════════════════════════════════════════════════
The following RangeError was thrown building FutureBuilder<QuerySnapshot>(dirty, state: _FutureBuilderState<QuerySnapshot>#cff34):
RangeError (index): Invalid value: Valid value range is empty: 0
The relevant error-causing widget was:
FutureBuilder<QuerySnapshot> file:///C:/Users/Paul/AndroidStudioProjects/leaf/leaf/lib/screens/search_card_info.dart:61:13
When the exception was thrown, this was the stack:
#0 List.[] (dart:core-patch/growable_array.dart:149:60)
#1 _SearchCardInfoState.build.<anonymous closure> (package:leaf/screens/search_card_info.dart:80:59)
#2 _FutureBuilderState.build (package:flutter/src/widgets/async.dart)
#3 StatefulElement.build (package:flutter/src/widgets/framework.dart:4334:27)
#4 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4223:15)
...
════════════════════════════════════════════════════════════════════════════════════════════════════
这里可能有什么问题?请像这样更改代码
if (snapshot.hasData && snapshot.data.length>0) {
User user = User.fromDoc(snapshot.data.documents[0]);
//..Implement what you want here}
您面临此错误,因为firebase没有结果,然后您尝试调用
|0]
,但0处没有元素。你必须用一种有条件的方式来包装它。因此,只有当快照中的用户数量超过时,才会执行此命令。数据JU会像这样更改您的代码
if (snapshot.hasData && snapshot.data.length>0) {
User user = User.fromDoc(snapshot.data.documents[0]);
//..Implement what you want here}
您面临此错误,因为firebase没有结果,然后您尝试调用|0]
,但0处没有元素。你必须用一种有条件的方式来包装它。因此,只有在snapshot.data
中有多于on的用户时,才会执行该命令。请检查snapshot.data.documents.i是否为空
请检查条件snapshot.data.documents.i是否为空
if (snapshot.hasData && snapshot.data.length>0) {
User user = User.fromDoc(snapshot.data.documents[0]);
//..Implement what you want here}
if(snapshot.data.documents.length!=0){
User user = User.fromDoc(snapshot.data.documents[0]);
return SearchCardItemExtended(user: user, ride: widget.ride,);
}
return new Container();