如何从列表中删除项目(Dart)| Firebase 实时数据库

How to remove items from a list (Dart) | Firebase rtdb

我有一个列表,其中存储了我不想在 StreamBuilderListView 中显示的项目。此列表从 firebase rtdb.

检索其信息

我使用 StreamBuilder 填充 ListView,然后我使用 for-loop 尝试遍历包含我不想显示的项目的列表。到目前为止,我可以填充 ListView,但从 StreamBuilder 中删除的项目不准确。

以下是我的处理方法(非常感谢任何帮助):

我可以确认列表中肯定包含我不想显示的信息

ListView.builder(
    physics: BouncingScrollPhysics(),
    itemCount: friends.length,
    itemBuilder: (context, index) {
      final friend = friends[index];

      if (friend.userID == uid){
        return null;
      } else {

        for (FriendSuggestionModel hidden in hiddenSuggestions){
          if (hidden.userID == friend.userID){
            return null;
          } else {
            return friendThumbnail(index, friend);
          }
        }
        return null;
      }
    });

首先,我认为您需要在 itemBuilder 中 return 一个 Widget,所以不要使用 return null,您可以 return 一个空容器 return Container().

你也可以使用list.contains(x)方法来验证这个id是否应该被隐藏(如我所想,如下:

itemBuilder: (context, index) {
      final friend = friends[index];

      if (friend.userID == uid){
        return const Container();
      } else {
        return hiddenSuggestions.map((hidden) => hidden.userID).toList().contains(friend.userID)
          ? const Container()
          : friendThumbnail(index, friend);
      }
    }

在此处查看该方法文档:https://api.dart.dev/stable/2.0.0/dart-core/Iterable/contains.html