Flutter Http请求获响应但then回调接收null问题排查
问题排查与解决
你的问题出在Future链式调用的返回值传递上:
第一个then回调是空实现,没有返回任何值,Dart会默认将其视为返回Future<void>,所以后续第二个then接收到的参数自然是null。
解决方法一:移除多余的空then
直接保留需要处理结果的then即可:
VehicleHttpService.saveData(Constant.POST_VEHICLE_URL, widget.vehicle) .then((String value){ print("#########"); print(value); // 现在能拿到正确的result了 print("#########"); }) .whenComplete((){ Navigator.of(context).pop(); });
解决方法二:在第一个then中返回参数
如果确实需要保留多个then(比如有分步业务逻辑),要确保每个then都把处理后的值返回给下一个回调:
VehicleHttpService.saveData(Constant.POST_VEHICLE_URL, widget.vehicle) .then((value){ // 这里可添加你的业务逻辑 return value; // 必须返回value,否则下一个then会拿到null }) .then((String value){ print("#########"); print(value); // 现在能拿到正确的result了 print("#########"); }) .whenComplete((){ Navigator.of(context).pop(); });
补充说明:你的saveData方法返回的是Future<String>,所以then回调里的value无需加?标记可空,直接写String value即可,避免空安全的冗余疑惑。
内容的提问来源于stack exchange,提问作者Eliasu
相关产品推荐
相关产品推荐

