检查列表是不是为空或 null 颤动

Posted

技术标签:

【中文标题】检查列表是不是为空或 null 颤动【英文标题】:check list if it is empty or null flutter检查列表是否为空或 null 颤动 【发布时间】:2021-11-21 12:26:03 【问题描述】:

我从服务器上得到这个,我需要将我的复选框设置为 true 为 null 的值,而如果我发现 [] 我不需要做任何事情

"FRI": [null], "MON": [null], "SAT": [null], "SUN": ["to": "16:27", "from": "15:27"], "THU": [null], "TUE": [null], "WED": []

我正在尝试一个

if (widget.initialValues!.every((e) => e == null)) 
  _isClosed.trigger(true);

但它不能正常工作,因为在这两种情况下它都会返回为真

【问题讨论】:

【参考方案1】:

当您尝试使用数组的每一项并将其与null 进行比较时,[null][] 会得到类似的结果。相反,你应该使用.isEmpty,因为这个方法定义了一个数组是否为空,并且在这种方法中[null] and []`不相等,因为第一个有一个元素,而另一个有0个元素!例如:

//an example list
const list = [ [], [null]];
  
  for(int i=0; i<list.length; i++)
    if(list[i].isEmpty)
      print("empty " + i.toString());
     else 
      print("not empty " + i.toString());
    
  

结果将是:

empty 0
not empty 1

同样,您可以使用.length,如下所示:

const list = [ [], [null]];
for(int i=0; i<list.length; i++)
    print(i.toString() + " length is " + list[i].length.toString());
  

这些只是示例,您也可以将它们映射到您的代码中。

【讨论】:

mm 好的,这些例子对我来说很清楚,但在我的代码中,如果我执行 if (widget.initialValues!.isEmpty) 它也会将值带为 null .. 不,你应该逐个检查元素而不是整个初始值!因为您希望能够为具有[null] 的每个项目返回true,但相反不希望对具有[] 的项目具有此功能。所以你应该单独检查整个项目 mm 好的,我明白了,谢谢,但我尝试编写你的代码但我有错误。我用照片更新我的问题 我认为您遗漏了什么,请提供initialValue,以便我查看。【参考方案2】:

对不起,如果我用另一个帐户回复你,但我在家用另一台电脑,我没有用户,希望你能阅读..

      final List<OpeningHours?>? initialValues;

class OpeningHours 
  OpeningHours(
    required this.open,
    required this.close,
  ) : assert(
          open.isBefore(close),
          "L'apertura dev'essere per forza prima della chiusura",
        );

  factory OpeningHours.fromMap(Map map) 
    if (!map.containsKey('from') || !map.containsKey('to')) 
      final msg =
          'La mappa $map non è valida per creare un oggetto [OpeningTime]';
      throw Exception(msg);
    
    final from = TimeOfDayExtension.parse(map['from']! as String);
    final to = TimeOfDayExtension.parse(map['to']! as String);
    return OpeningHours(open: from, close: to);
  

  final TimeOfDay open;

  final TimeOfDay close;

  String get format => '$open.asString()-$close.asString()';

  @override
  String toString() => jsonEncode(toMap());

  Map<String, String> toMap() =>
      'from': open.asString(), 'to': close.asString();

【讨论】:

以上是关于检查列表是不是为空或 null 颤动的主要内容,如果未能解决你的问题,请参考以下文章

Vue v-if 语句检查变量是不是为空或 null

检查所有三列是不是不为空或为空

检查空或 null List<string>

如何检查 ViewBag 属性是不是为空或不存在

如何检查数据读取器是不是为空或为空

在 XSLT 中检查字符串是不是为空或空