【发布时间】:2020-07-03 11:25:27
【问题描述】:
我正在尝试在颤振中创建一个列表,为每个单元格从 firestore 异步加载数据:
Future getUserDetails(String userID) async {
DatabaseService databaseService =
DatabaseService(currentUserId: _currentUserID);
return databaseService.getUserDetails(userID: userID);
}
Future sampleText() async {
return Future.delayed(Duration(seconds: 3)).then((value) => randomString(5));
}
FutureBuilder _userAsyncCell(ClassAttendee attendeeData) {
return FutureBuilder(
future: getUserDetails(attendeeData.userId),//sampleText(),
builder: (BuildContext context, AsyncSnapshot snapshot) {
if (snapshot.connectionState == ConnectionState.waiting)
return Center(child: CircularProgressIndicator());
else if (snapshot.hasData)
return Text("DATA: ${snapshot.data}");
else if (snapshot.hasError)
return Text("ERROR: ${snapshot.error}");
else
return Text('None');
});
}
数据库服务中的AND:
final CollectionReference _usersCollection =
Firestore.instance.collection('users');
Future<User> getUserDetails({String userID}) async {
print('Fetching User public data ${userID}');
_usersCollection.document(userID).get().then((userJSON) {
User user = User.fromJson(userJSON.data);
print("Received user info: ${user.identifier}");
return user;
});
}
问题是futureBuilder中接收到的数据总是nil。
当使用sampleText() 而不是getUserDetails() 时,它工作正常。
你知道为什么会这样吗?
编辑: 在日志中我可以看到,userDetails 正确地返回了值,futureBuilder 的构建器被调用:
flutter: Fetching User public data Rh8snwoI27V6pA3wkmQwBPitgl63
flutter: Received user info: Rh8snwoI27V6pA3wkmQwBPitgl63
【问题讨论】: