flutter - NoSuchMethodError : invalid member on null (Flutter Web)

标签 flutter google-cloud-firestore flutter-web

我正在制作一个卡片列表,它从 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/

相关文章:

android - 加载 InterstitialAd 时 Flutter App 崩溃

flutter - Dart - 如何将 yyyy-MM-dd 中的简单日期字符串的格式更改为 dd-MM-yyyy

android - FirestoreRecyclerAdapter 不调用 onCreateViewHolder

macos - 在 myapp 中运行 "flutter pub get"...(这花费了意想不到的长时间。)

flutter - 如何在flutter中创建目录

javascript - 如何导入 Cloud Firestore?

javascript - 按对象键查询 Firestore

dart - Flutter Web 不显示 Material Design 图标

flutter - 是否可以在 flutter web 中为域添加前缀?

Flutter WebView 位置