最近项目要用到flutter,所以上B站自学了下。
由于视频所用dio版本不同,踩了好几个坑,解决好几小时才弄好,有必要分享给大家:
教程中使用dio拦截器是3.0.9版本的,写法如下:
dio.interceptors.add(InterceptorsWrapper(
onRequest: (options) {
print("请求" + options.headers.toString());
},
onResponse: (response) {
print("接收" + response.toString());
},
onError: (handler) {
print(handler);
},
));
由于我用的是dio 4.0.0版在调用的时候发现无法获取到返回值,明明是请求有错误,也无法获取到,网上搜索好久没法解决。
查看官方文档后终于解决了,以下是新版写法:
dio.interceptors.add(InterceptorsWrapper(
onRequest: (options, handler) {
//必须传入request,与教程不同
print("请求" + options.headers.toString());
return handler.next(options); //必须返回,否则不往下走,与教程不同,下同
},
onResponse: (response, handler) {
print("接收" + response.toString());
return handler.next(response);
},
onError: (DioError e, handler) {
return handler.next(e);
},
));
区别都在上面了,希望能帮到碰到相同问题的人。