【问题标题】:How to remove items from a list (Dart) | Firebase rtdb如何从列表中删除项目 (Dart) | Firebase rtdb
【发布时间】:2022-02-07 19:40:56
【问题描述】:

我有一个列表,其中存储了我不想在我的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;
      }
    });

【问题讨论】:

    标签: flutter dart firebase-realtime-database flutter-streambuilder


    【解决方案1】:

    首先,我认为你需要在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

    【讨论】:

    • 感谢@Leonardo 的回复!语法存在一些小问题,但我已经修复了它们并且它按预期工作 - 我应该编辑您的回复并将其标记为已接受吗?
    • 我无法编辑上面的评论,但它是正确的!我刚刚删除了“?”之后的返回语句。和 ”!”。此外,映射行应为:return hiddenSuggestions.map((hidden) => hidden.userID).toList().contains(friend.userID)
    • 我编辑以帮助任何有同样疑问的人,谢谢。我认为这应该是公认的回应
    猜你喜欢
    • 2020-02-16
    • 2018-09-27
    • 1970-01-01
    • 2021-10-05
    • 2021-12-10
    • 1970-01-01
    • 2021-07-03
    • 1970-01-01
    • 2021-07-19
    相关资源
    最近更新 更多