我正在尝试在Dio中使用Interceptor和Dio,我必须处理令牌过期。以下是我的代码

Future getApiClient() async {

token = await storage.read(key: USER_TOKEN);

_dio.interceptors.clear();

_dio.interceptors

.add(InterceptorsWrapper(onRequest: (RequestOptions options) {

// Do something before request is sent

options.headers["Authorization"] = "Bearer " + token;

return options;

},onResponse:(Response response) {

// Do something with response data

return response; // continue

}, onError: (DioError error) async {

// Do something with response error

if (error.response?.statusCode == 403) {

// update token and repeat

// Lock to block the incoming request until the token updated

_dio.interceptors.requestLock.lock();

_dio.interceptors.responseLock.lock();

RequestOptions options = error.response.request;

FirebaseUser user = await FirebaseAuth.instance.currentUser();

token = await user.getIdToken(refresh: true);

await writeAuthKey(token);

options.headers["Authorization"] = "Bearer " + token;

_dio.interceptors.requestLock.unlock();

_dio.interceptors.responseLock.unlock();

_dio.request(options.path, options: options);

} else {

return error;

}

}));

_dio.options.baseUrl = baseUrl;

return _dio;

}

问题是Dio不再使用新令牌重复网络调用,而是将错误对象返回到调用方法,后者又呈现了错误的小部件,有关如何使用dio处理令牌刷新的任何线索?

dio拦截器 flutter_在Dio中使用拦截器使Flutter刷新令牌相关推荐

  1. 拦截webapp下jsp_Spring MVC中的拦截器/过滤器HandlerInterceptorAdapter的使用

    I分享永久IDEA激活码:ntelliJ IDEA 2020.1.2 激活码,永久有效(点击该链接)! 一般情况下,对来自浏览器的请求的拦截,是利用Filter实现的 而在Spring中,基于Filt ...

  2. python类装饰器详解-python 中的装饰器详解

    装饰器 闭包 闭包简单的来说就是一个函数,在该函数内部再定义一个函数,并且这个内部函数用到了外部变量(即是外部函数的参数),最终这个函数返回内部函数的引用,这就是闭包. def decorator(p ...

  3. python装饰器作用-理解python中的装饰器

    一 什么是装饰器? 正如其名,装饰器的作用是为已经存在的对象增加额外功能(装饰),由此可使已有函数在无需代码改动的情况下增加额外功能:装饰器的本质是嵌套的函数且返回函数对象,即闭包.有关闭包的概念,可 ...

  4. python编写装饰器_写python中的装饰器

    python中的装饰器主要用于在已有函数实现功能前附加需要输出的信息,下面将用实例展示我如何写装饰器. 首先分别尝试写装饰器装饰一个无参函数和一个有参函数(被装饰函数仅输出,无返回值情况下) 1 de ...

  5. aspen中再沸器模拟_【单元操作001】再沸器第一波·Aspen Plus中的再沸器设置

    蒸馏操作是通过汽化.冷凝达到提浓的目的,加热汽化主要通过再沸器来完成,相对而言,精馏塔的再沸器种类较多,选择时要考虑的因素也比较多.这一系列的文章,小编试图通过流程模拟.再沸器排布.再沸器类型及在工程 ...

  6. python中的装饰器有哪些-python中的装饰器

    python的装饰器是用来装饰函数的.这是什么意思呢?假如我们有一个函数,这个函数的功能不能满足我们现有的需求,那么我们可以通过装饰器在这个函数执行前执行后做一些我们需要的操作(如果函数本身功能不满足 ...

  7. 设计模式(6)-装饰器(认识程序中的装饰器)

    之前已经看过装饰器模式,但是感觉不是很清晰,但是有一种情况下出的代码,一定是装饰器. Widget* aWidget = new BorderDecorator(new BorderDecorator ...

  8. python中的装饰器有哪些-python中的装饰器详解

    在了解装饰器的之前一定要先了解函数作为参数传递, 什么是函数内嵌,请参考我之前写的博客函数简介 因为在python里面,函数也是对象,也可以作为参数进行传递.python装饰器本质也是一种特殊函数,它 ...

  9. python装饰器详解-python中的装饰器详解

    在了解装饰器的之前一定要先了解函数作为参数传递, 什么是函数内嵌,请参考我之前写的博客函数简介 因为在python里面,函数也是对象,也可以作为参数进行传递.python装饰器本质也是一种特殊函数,它 ...

最新文章

  1. RabbitMQ详细文档
  2. tcp connection setup的实现
  3. python 去掉文件头部几行_批量重命名文件的python代码
  4. 天平游码读数例题_电子天平偏载误差的检定与处理
  5. python中的作用域_python作用域
  6. 利用snmptools实现cacti自定义监控Windows性能计数器
  7. 一个正则表达式酿成的惨案
  8. 手机支持html5绘图性能,【高级系列】Canvas绘制性能专题
  9. C语言 exit() _exit()
  10. MySQL学习(二、简单查询和多行、单行函数)
  11. 网站目标定位的关键词和选择质量高的关键词
  12. .mdf数据库恢复mysql_恢复mdf文件到数据库方法
  13. linux清理unbuntu无用空间,如何给Ubuntu系统清理垃圾
  14. 秦皇岛自驾三日游攻略
  15. c语言ans作用,ANS标准定义C语言是什么?
  16. Linux 常见问题
  17. python 获取路由器中设备ip地址_Python中如何获取当前机器的IP地址
  18. PCL点云处理与关键点提取
  19. java 连接sqlserver_java如何连接sqlserver数据库
  20. 《大明王朝》以牺牲换来大义

热门文章

  1. 通过 edu 邮箱登录 Office 365 获得 1 TB 的 OneDrive 空间的方法
  2. 什么是EC鼓风机(ec blower fan)?
  3. 自动控制原理matlab实验,自动控制原理MATLAB实验报告[稻谷书苑]
  4. NLP-信息抽取-关系抽取-2016:Attention-BiLSTM实体关系分类器【基于双向LSTM及注意力机制的关系分类】【数据集:SemEval-2010 Task 8】
  5. 中国移动成功反击,联通和电信的价格战失效
  6. h5 - PhotoSwipe图片放大功能集成和使用
  7. JS内置DATE对象部分函数对日期的支持只到1901年
  8. java项目打包方式
  9. 阿里云服务器怎么搭建IPv6?
  10. 你是啥时候使用人生中的第一台电脑的?