You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter/Dart中如何过滤掉registrationStatus为Pending的列表项

解决方案

你可以在map转换之前,先用where方法过滤掉registrationStatus等于'Pending'的条目,这样不符合条件的项就不会被转换成Evse对象,自然也不会加入到tempEvses列表中。修改后的代码如下:

tempEvses.addAll(newItems
    .where((item) => item['registrationStatus'] != 'Pending')
    .map<Evse>((items) {
      final evseID = items['evseID'];
      final friendlyName = items['friendlyName'];
      final registrationStatus = items['registrationStatus'];
      final street = items['street'];
      final streetNumber = items['streetNumber'];
      final region = items['region'];
      final lat = items['latitude'] ?? 0.0;
      final lng = items['longitude'] ?? 0.0;
      final connectorList = items['connectorWSList'];
      final cpSerial = items['cpSerial'];
      final img = items['img'];

      return Evse(
        evseID: evseID,
        friendlyName: friendlyName,
        registrationStatus: registrationStatus,
        street: street,
        streetNumber: streetNumber,
        region: region,
        lat: lat,
        lng: lng,
        connectorList: connectorList,
        cpSerial: cpSerial,
        img: img,
      );
    }).toList());

说明

  • where((item) => item['registrationStatus'] != 'Pending') 会遍历newItems,只保留registrationStatus不等于'Pending'的元素。
  • 后续的map操作只会处理这些符合条件的元素,避免了不必要的对象创建,提升了效率。

内容的提问来源于stack exchange,提问作者Bill Tertis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 22:55:19