我正在制作一个卡片列表,它从 Firestore 数据库中为 Flutter Web 应用程序获取数据,但是抛出了这个错误:
- "The following JSNoSuchMethodError was thrown building
UserList(dirty, dependencies: [InheritedProvider<List<ClientUser>>],
state: _UserListState#ab779): NoSuchMethodError: invalid member on
null: 'length'"
这是我用来构建列表的代码:
class _UserListState extends State<UserList> {
@override
Widget build(BuildContext context) {
final users = Provider.of<List<ClientUser>>(context);
return ListView.builder(
itemBuilder: (context, index) {
return UserTile(user: users[index]);
},
itemCount: users.length,
);
}
在我的数据库服务文件中,以下是我从数据库中获取快照并从快照中获取列表的方法:
List<ClientUser> _clientListFromSnapshot(QuerySnapshot snapshot) {
return snapshot.documents.map((doc) {
return ClientUser(
name: doc.data['name'] ?? '', difficulty: doc.data['difficulty'] ?? 5);
}).toList();
}
// get users stream
Stream<List<ClientUser>> get users {
return userCollection.snapshots().map(_clientListFromSnapshot);
}
这是我声明 StreamProvider 的方式:
return StreamProvider<List<ClientUser>>.value(
value: UserDatabaseService().users,
我哪里错了??
最佳答案
正如之前在评论中提到的,检查空 List 的值可能会导致错误。一个简单的空检查器应该可以解决这个问题。
final users = Provider.of<List<ClientUser>>(context);
if (users != null && users.length > 0){
return ListView.builder(
itemBuilder: (context, index) {
return UserTile(user: users[index]);
},
itemCount: users.length,
);
}
else {
// Display loading widget
}
关于flutter - NoSuchMethodError : invalid member on null (Flutter Web),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62014068/