Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 如何从颤振中的dio获取自定义错误?_Flutter_Dart_Dio - Fatal编程技术网

Flutter 如何从颤振中的dio获取自定义错误?

Flutter 如何从颤振中的dio获取自定义错误?,flutter,dart,dio,Flutter,Dart,Dio,我试图从后端获取自定义错误,但DIO却给了我此错误: DioError[DioErrorType.RESPONSE]:Http状态错误[400] 这是我的密码: @override Future<SignUpResponseModel> registerBuyer(BuyerModel user) async { final response = await api.dio.post('api/users/buyer', data: user.toJson());

我试图从后端获取自定义错误,但DIO却给了我此错误:

DioError[DioErrorType.RESPONSE]:Http状态错误[400]

这是我的密码:

  @override
  Future<SignUpResponseModel> registerBuyer(BuyerModel user) async {
    final response = await api.dio.post('api/users/buyer', data: user.toJson());
    if (response.statusCode == 200) {
      return response.data.value;
    } else {
      final error =
          response.data.errors[0] ?? "Error";
      throw Exception(error);
    }
  }
@覆盖
未来注册购买者(BuyerModel用户)异步{
最终响应=wait api.dio.post('api/users/buyer',数据:user.toJson());
如果(response.statusCode==200){
返回response.data.value;
}否则{
最终错误=
响应.数据.错误[0]??“错误”;
抛出异常(错误);
}
}

解决方案是在代码的catch块中添加DIORROR。这样我就能够管理和访问来自后端的自定义错误

try {
      final response =
          await api.dio.post('api/users/buyer', data: user.toJson());
      if (response.statusCode == 200) {
        return response.data.value;
      } else {
        final error =
            response.data.errors[0] ?? "Error";
        throw Exception(error);
      }
    } catch (e) {
      if (e is DioError) {
        //This is the custom message coming from the backend
        throw e.response.data['errors'][0] ??
            "Error";
      } else {
        throw Exception("Error");
      }
    }
  }

解决方案是在代码的catch块中加入DioError。这样我就能够管理和访问来自后端的自定义错误

try {
      final response =
          await api.dio.post('api/users/buyer', data: user.toJson());
      if (response.statusCode == 200) {
        return response.data.value;
      } else {
        final error =
            response.data.errors[0] ?? "Error";
        throw Exception(error);
      }
    } catch (e) {
      if (e is DioError) {
        //This is the custom message coming from the backend
        throw e.response.data['errors'][0] ??
            "Error";
      } else {
        throw Exception("Error");
      }
    }
  }

状态代码400在后端处理?是。我已经知道怎么处理了。但是如果你知道更好的方法,请告诉我。谢谢大家!@dm_trYes您的方法还不错,尽管您可以避免在后端处理状态代码400两次时截获错误?是的。我已经知道怎么处理了。但是如果你知道更好的方法,请告诉我。谢谢大家!@dm_trYes您的方法不错,尽管您可以避免两次截获错误