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
相关产品推荐
相关产品推荐

