【发布时间】:2021-09-21 03:40:23
【问题描述】:
当我使用这段代码时:
return FutureBuilder(
future: searchResultsFuture,
builder: (context, snapshot) {
if (!snapshot.hasData) {
return cargandoCircular();
}
List<UserResult> searchResults = [];
snapshot.data.docs.forEach((doc) {
User user = User.fromDocument(doc);
UserResult searchResult = UserResult(user);
searchResults.add(searchResult);
});
return ListView(
children: searchResults,
);
我得到错误:
The property 'docs' can't be unconditionally accessed because the receiver can be 'null'.
Try making the access conditional (using '?.') or adding a null check to the target ('!').
添加空检查并不能解决任何问题,而且所有内容都在另一个 dart 文件的 User 类中声明,如下所示:
class User {
final String id;
final String username;
final String email;
final String photoUrl;
final String displayName;
final String bio;
User(
{required this.id,
required this.username,
required this.email,
required this.photoUrl,
required this.displayName,
required this.bio});
factory User.fromDocument(DocumentSnapshot doc) {
return User(
id: doc['id'],
email: doc['email'],
username: doc['username'],
photoUrl: doc['photoUrl'],
displayName: doc['displayName'],
bio: doc['bio'],
);}}
【问题讨论】:
-
添加一个!到 snapshot.data.docs.forEach((doc): snapshot.data!.docs.forEach((doc)
-
我在问题中澄清了添加空检查并没有解决任何问题。
-
我将
类型添加到 FutureBuilder,然后?在snapshot.data上,它解决了vs代码中的错误,但它在应用程序上没有做任何事情。
标签: firebase flutter dart dart-null-safety