0

我有一个列表,其中存储了我不想作为 , 的一部分显示的StreamBuilder项目ListView。此列表从 中检索其信息firebase rtdb

我使用 aStreamBuilder填充ListView,然后使用 afor-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;
      }
    });
4

1 回答 1

0

首先,我相信你需要在 itemBuilder 中返回一个 Widget,所以不要使用return null而你可以使用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

于 2022-02-04T18:01:50.657 回答