[Flutter] Dio网络请求慢,Cookie丢失问题

113 阅读1分钟
//使用原生平台的adapter,不然太慢了
//使用了原生平台adapter,无法登录
dio.httpClientAdapter = NativeAdapter();

Dio 的默认教程是不带原生平台的适配器的

1、请求响应太慢,可以尝试添加原生平台的适配器

import 'package:native_dio_adapter/native_dio_adapter.dart';
...
...

dio = Dio(options);
dio.httpClientAdapter = NativeAdapter();

...
...

2、使用了原生 Adapter 后的实例,使用 Cookie 登录的网站无法登录了,比如 V2EX。没啥好的解决办法,我本地写了两个 Dio 的实例,两个实例使用同一个保存 Cookie 的地址 ,登录时使用 无 Adapter 的 Dio 实例,登录后把 Cookie 同步到 有 Adapter 的 Dio 实例

/// 设置cookie
 setCookie() async {
   if (cookieManager != null) {
     dio.interceptors.remove(cookieManager);
   }

   var cookiePath = await Utils.getCookiePath();
   var cookieJar = PersistCookieJar(
     ignoreExpires: true,
     storage: FileStorage(cookiePath),
   );
   cookieManager = CookieManager(cookieJar);
   dio.interceptors.add(cookieManager!);
 }