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

Flutter Dio报connectTimeout[0ms]错误 如何修改超时配置解决创建笔记失败

问题原因

你遇到的Connecting timed out [0ms]报错,核心原因是初始化Dio实例时没有配置连接超时时长,Dio默认connectTimeout值为0,会触发连接超时逻辑。
另外两个现象属于正常情况:

  • 请求根本没成功发送到服务端,没有生成响应对象,所以e.response?.data打印为null
  • 控制台输出的DioError日志是你在on DioError catch块中主动调用print打印的内容,不是未捕获的异常向外抛出。
修改位置与解决方案

超时配置直接写在Dio实例初始化的位置,也就是NoteDB类中声明dio变量的代码处,统一全局配置即可,不需要在每个单独请求里重复设置。

  1. 替换原有Dio初始化代码
    根据你使用的Dio版本选择对应配置,将连接超时时长改为3000ms:
    如果你使用的是Dio 5.x及以上新版本(参数接收Duration类型):
class NoteDB extends ApiCalls {
  // 替换原来的 final dio = Dio();
  final dio = Dio(
    BaseOptions(
      connectTimeout: const Duration(milliseconds: 3000), // 连接超时时长设为3000ms
      receiveTimeout: const Duration(milliseconds: 3000), // 建议同步配置接收响应的超时时长
      // 固定接口根地址可以直接在这里配置,省去每次请求手动拼接的步骤
      // baseUrl: "你的接口根路径"
    )
  );
  final url = Url();

  // 其余原有业务代码保持不变

如果你使用的是Dio 4.x及更早旧版本(参数直接接收int类型毫秒值):

final dio = Dio(
  BaseOptions(
    connectTimeout: 3000,
    receiveTimeout: 3000,
  )
);
  1. 配置超时后仍报错时,按以下点排查
  • 本地调试场景下,安卓模拟器访问本机启动的后端服务不能用localhost/127.0.0.1,要替换为10.0.2.2;iOS模拟器可以正常使用localhost;真机调试要替换为开发电脑所在局域网的实际IP
  • 确认拼接后的完整请求地址、端口、路径没有拼写错误,后端服务处于正常运行状态
  • 修改配置后请全量重启应用,不要使用热重载,Dio实例在类初始化时创建,热重载不会触发重新加载
  • 你当前的try-catch块仅打印了错误日志,没有显式返回值,异常分支会隐式返回null,如果需要额外的错误提示可以在catch块中补充对应逻辑,不影响正常返回的话显式写return null;即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 21:18:23