首页 > 解决方案 > For 循环中的 If 语句 - (如果为 null,则不添加)

问题描述

我正在使用 Firestore 开展一个项目,我正在收集 Button 数据以使用 For 循环创建每个按钮。我可以设法获取这些数据并将其存储到列表中并创建按钮。现在我试图让用户在应用程序中添加或删除他自己的按钮。

这是一个示例
如果我的应用程序中有 5 个按钮,我正在从 firestore 收集信息以了解这些按钮是关闭还是打开。我将这个布尔状态存储到一个列表中,所以如果我有 5 个按钮,我会有一个你是的列表:

List<bool> cardsValue = [false, false, true, false, true];        

但是当我删除其中一个按钮时,假设我删除了中间那个,我会得到一个数组,如下所示:

List<bool> cardsValue = [false, false, null, false, true];

我需要添加一个 If 语句,这样当我收到 null 作为响应时,它不会将该 null 添加到我的列表中。所以我的清单是:

List<bool> cardsValue = [false, false, false, true];

示例结束
实际代码:
这是我的列表的实际外观:

List<bool> cardsValue = [for (int i = 0; i < cardamount; i++) snapshot.data[devices[i]]];  

我虽然在做但不幸的是没有工作是:

List<bool> cardsValue = [for (int i = 0; i < cardamount; i++) if (snapshot.data[devices[i]] == null){}else{snapshot.data[devices[i]]}];  

标签: flutterflutter-layout

解决方案


您可以使用类的where方法List来过滤掉null

List<bool> cardsValue = [for (int i = 0; i < cardamount; i++) snapshot.data[devices[i]]]
    .where((v) => v != null)
    .toList()
    .cast<bool>()

输出

[false, false, false, true]

推荐阅读