【问题标题】:Futter/dart: [ERROR:flutter/lib/ui/ui_dart_state.cc(198)] Unhandled Exception: Bad state: No elementFutter/dart:[错误:flutter/lib/ui/ui_dart_state.cc(198)] 未处理异常:错误状态:无元素
【发布时间】:2022-08-20 19:14:18
【问题描述】:
 getActivitiesResponseModel!.activities!
        .where((element) => element.status == \"Pending\")
        .first

当没有找到与上述相关的任何项目时,比 throw坏状态异常. 我搜索过但是orElse: () => null 回调没有为where函数定义,我只需要一个对象。所以我应该怎么做来处理这个异常

    标签: flutter dart


    【解决方案1】:

    由于 .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);
    

    【讨论】:

    • Konstantin Gorynin tnx 这对我有用
    【解决方案2】:
     getActivitiesResponseModel!.activities!
    

    这是一个非常糟糕的用法。您需要确保这些数据不为空。

    if(getActivitiesResponseModel != null) 
     { 
       if(getActivitiesResponseModel!.activities != null){
         getActivitiesResponseModel!.activities!
            .where((element) => element.status == "Pending")
            .first
    }}
    

    你可以这样试试吗?

    【讨论】:

    • 感谢您构建代码,但 getActivity 响应模型!.activities!有更多元素,但没有状态为未决的元素而不是抛出异常
    • 你能检查一下也不为空吗
    【解决方案3】:
    if(getActivitiesResponseModel != null) 
     { 
       if(getActivitiesResponseModel!.activities != null){
         getActivitiesResponseModel!.activities!
            .where((element) => element.status == "Pending")
            .first
    }}
    

    【讨论】:

      猜你喜欢
      • 2019-07-21
      • 1970-01-01
      • 2021-08-24
      • 1970-01-01
      • 1970-01-01
      • 2020-12-05
      • 1970-01-01
      • 2021-02-28
      • 1970-01-01
      相关资源
      最近更新 更多