【发布时间】:2022-08-20 19:14:18
【问题描述】:
getActivitiesResponseModel!.activities!
.where((element) => element.status == \"Pending\")
.first
当没有找到与上述相关的任何项目时,比 throw坏状态异常. 我搜索过但是orElse: () => null 回调没有为where函数定义,我只需要一个对象。所以我应该怎么做来处理这个异常
getActivitiesResponseModel!.activities!
.where((element) => element.status == \"Pending\")
.first
当没有找到与上述相关的任何项目时,比 throw坏状态异常. 我搜索过但是orElse: () => null 回调没有为where函数定义,我只需要一个对象。所以我应该怎么做来处理这个异常
由于 .first 方法而引发的异常,必须从列表中返回单个对象。 在您的情况下,通过过滤可能没有元素,那么,您应该检查您的列表是否不为空,就像这样。
Object? _searchitem;
var filteredList = getActivitiesResponseModel!.activities!
.where((element) => element.status == "Pending");
if (filteredList.isNotEmpty)
{
_searchitem = filteredList.first;
}
或者,您也可以使用 .firstWhere(),您需要在其中定义 orElse 函数来处理错误。
getActivitiesResponseModel!.activities!
.firstWhere((element) => element.status == "Pending", orElse: () => null);
【讨论】:
getActivitiesResponseModel!.activities!
这是一个非常糟糕的用法。您需要确保这些数据不为空。
if(getActivitiesResponseModel != null)
{
if(getActivitiesResponseModel!.activities != null){
getActivitiesResponseModel!.activities!
.where((element) => element.status == "Pending")
.first
}}
你可以这样试试吗?
【讨论】:
if(getActivitiesResponseModel != null)
{
if(getActivitiesResponseModel!.activities != null){
getActivitiesResponseModel!.activities!
.where((element) => element.status == "Pending")
.first
}}
【讨论】: