Flutter Dio侦听器不处理同一回调中的第一个请求,仅处理后续调用

Flutter Dio侦听器不处理同一回调中的第一个请求,仅处理后续调用,flutter,dart,dio,Flutter,Dart,Dio,我正在测试dio,并试图添加一个拦截器,以便在将来的请求中简单地添加一个令牌,但得到了一个奇怪的结果,我似乎无法修复。作为测试,我只有两个按钮。单击一个按钮时,应该让我登录并将令牌添加到拦截器,第二个按钮请求身份验证配置文件数据。出于某种原因,单击“登录”按钮我可以正常登录,但在单击第二个按钮访问身份验证配置文件数据时,会得到403禁止(即使我在添加拦截器后请求配置文件数据)。奇怪的是,当我再次单击第二个按钮时(没有更改任何代码,甚至没有热加载),一切正常,auth配置文件数据被打印出来。每次热

我正在测试dio,并试图添加一个拦截器,以便在将来的请求中简单地添加一个令牌,但得到了一个奇怪的结果,我似乎无法修复。作为测试,我只有两个按钮。单击一个按钮时,应该让我登录并将令牌添加到拦截器,第二个按钮请求身份验证配置文件数据。出于某种原因,单击“登录”按钮我可以正常登录,但在单击第二个按钮访问身份验证配置文件数据时,会得到403禁止(即使我在添加拦截器后请求配置文件数据)。奇怪的是,当我再次单击第二个按钮时(没有更改任何代码,甚至没有热加载),一切正常,auth配置文件数据被打印出来。每次热重启时,我都会回到同一个问题,即我对auth概要文件数据的第一个请求有一个403,但随后的请求工作正常。几个小时来,我一直在想到底发生了什么,但我不明白出了什么问题。请帮忙。非常感谢。(后端由django处理,但问题不可能存在,因为api可以与其他框架一起工作,即使在dio中,也可以在后续的按钮按下时正常工作,只是不是第一次)

代码 第一次单击获取配置文件按钮时的控制台
又过了5个小时,终于解决了问题

session.options.headers[HttpHeaders.authorizationHeader] = 'token ' + token;
应该是

requestOptions.headers[HttpHeaders.authorizationHeader] = 'token ' + token;

不确定这是否有帮助@JohnJoe谢谢,但这是处理刷新过期代币的问题。我在登录时得到了新的代币。
flutter: Http status error [403]
[VERBOSE-2:ui_dart_state.cc(177)] Unhandled Exception: DioError [DioErrorType.RESPONSE]: Http status error [403]
#0      DioMixin._request._errorInterceptorWrapper.<anonymous closure>.<anonymous closure>.<anonymous closure>
package:dio/src/dio.dart:870
#1      _rootRunUnary (dart:async/zone.dart:1198:47)
#2      _CustomZone.runUnary (dart:async/zone.dart:1100:19)
#3      _FutureListener.handleValue (dart:async/future_impl.dart:143:18)
#4      Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:696:45)
#5      Future._propagateToListeners (dart:async/future_impl.dart:725:32)
#6      Future._completeWithValue (dart:async/future_impl.dart:529:5)
#7      Future._asyncCompleteWithValue.<anonymous closure> (dart:async/future_impl.dart:567:7)
#8      _rootRun (dart:async/zone.dart:1190:13)
#9      _CustomZone.run (dart:async/zone.dart:1093:19)
#10     _CustomZone.runGuarded (dart:async/zone.dart:997:7)
#11     _CustomZone.bindCallbackGuarded.<anonymous closure> (dart:async/zon<…>
flutter: {id: 3, username: tester, first_name: , last_name: , email: tester@tester.com}
session.options.headers[HttpHeaders.authorizationHeader] = 'token ' + token;
requestOptions.headers[HttpHeaders.authorizationHeader] = 'token ' + token;