首页 > 解决方案 > 未处理的异常:未处理的错误“包:bloc/src/transition.dart”:断言失败:第 27 行 pos 16:“nextState!= null”:不正确

问题描述

更新 state 中的值时出现此错误。请建议我如何解决它。在颤动中使用 BLOC 时更新当前状态的最佳方法是什么。添加了我的 BLOC 类代码。此错误发生 onItemClick 事件。

 onItemClicked: (e) async* {
      try {
        yield walmartState;

        List<CommonDataObj> dataList =
            walmartItemChanged(e.index, e.walmartList);
        yield state.copyWith(walmartList: some(right(dataList)));
        LinkedHashMap<String, RequestData> reqMap = state.requestDataMap;
        dataList.forEach((element) {
          if (element.isSelected) {
            RequestData data = RequestData(element.intStoreId, element.intId);
            if (reqMap.containsKey(e.key)) {
              reqMap.update(e.key, (value) => data);
            } else {
              reqMap.putIfAbsent(e.key, () => data);
            }
          } else {
            if (reqMap.containsKey(e.key)) {
              var value = reqMap[e.key];
              if (value.int_product_id == element.intId &&
                  value.int_store_id == element.intStoreId) {
                reqMap.remove(e.key);
              }
            }
          }
        });

        yield state.copyWith(requestDataMap: reqMap);
        yield state.copyWith(requestDataMap: reqMap);
        print('State request Data Map : $reqMap');
      } catch (e) {
        print(e);
      }

      try {
        bool selected = false;
        e.currentDataMap.forEach((key, value) {
          for (var item in value) {
            if (item.isSelected) {
              selected = true;
              break;
            }
          }
        });

        int curQuantity = state.currentQuantity;
        if (curQuantity == 0) {
          curQuantity = curQuantity + 1;
        } else if (curQuantity > 0 && !selected) {
          curQuantity = 0;
        }
        var newState = state.copyWith(currentQuantity: curQuantity);
        yield newState;
      } catch (e) {
        print(e);
      }
    }

标签: flutterbloc

解决方案


推荐阅读