You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter配置Dio超时参数后出现LateInitializationError错误怎么解决

问题解答

错误成因

你在构造Dio实例的过程中,直接在BaseOptions参数内访问了还未完成赋值的dio变量。late修饰的变量必须完成赋值后才能被访问,而你赋值dio的逻辑本身还在执行时就调用dio.options.xxx,自然会触发未初始化错误。
此外你存在逻辑误区:BaseOptions本身就是用来配置Dio实例参数的配置类,不需要通过引用Dio实例的options来赋值。

解决方法

直接给BaseOptions的三个超时参数传入对应数值即可,无需引用未初始化的dio变量:
如果使用Dio 4.x及以上版本,超时参数接收Duration类型,修正后的代码如下:

class DioHelper {
  static late Dio dio;

  static init() {
    dio = Dio(
      BaseOptions(
        baseUrl: 'https://newsapi.org',
        receiveDataWhenStatusError: true,
        connectTimeout: const Duration(milliseconds: 100000),
        receiveTimeout: const Duration(milliseconds: 30000),
        sendTimeout: const Duration(milliseconds: 30000),
      ),
    );
  }

  static Future<Response> getData({
    required String url,
    required Map<String, dynamic> query,
  }) async {
    return await dio.get(
      url,
      queryParameters: query,
    );
  }
}

如果使用Dio 3.x及更低版本,直接传入毫秒数值即可:

connectTimeout: 100000,
receiveTimeout: 30000,
sendTimeout: 30000,

额外注意事项

调用getData方法前必须先执行一次DioHelper.init()完成dio变量初始化,建议在应用启动入口main函数中runApp执行前完成初始化调用。

内容的提问来源于stack exchange,提问作者Nyctophilius

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 15:54:02