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

Flutter Dio注册接口返回null求助:数据库已创建用户但响应为空

问题分析与解决

你遇到的问题是变量作用域冲突导致返回null,具体看代码:

在DioClient的userRegistration方法里,你先在方法顶部声明了Response? userData;,但在try代码块里又重新定义了一个同名的局部变量:

Response userData = await WebUtil.createDio().post(...);

这个局部变量只在try块内有效,和方法顶部的userData不是同一个。所以即使try块里打印的userData有值,方法最后返回的还是顶部那个初始化为null的变量。

修复方法

把try块里的变量声明去掉,直接给方法顶部的userData赋值:

修改后的userRegistration方法:

Future<Response?> userRegistration({required RegisterInfoReq requestData}) async {
  Response? userData;
  try {
    // 去掉前面的Response,直接给外部的userData赋值
    userData = await WebUtil.createDio().post('/Candidate/RegisterCandidate', data: requestData);
    if (kDebugMode) {
      print('User Info: ${userData}');
    }
  } on DioError catch (e) {
    // 原错误处理代码不变
    if (e.response != null) {
      if (kDebugMode) {
        print('Dio error!');
        print('STATUS: ${e.response?.statusCode}');
        print('DATA: ${e.response?.data}');
        print('HEADERS: ${e.response?.headers}');
      }
    } else {
      if (kDebugMode) {
        print('Error sending request!');
        print(e.message);
      }
    }
  }
  return userData;
}

额外优化建议

你也可以简化代码,不需要提前初始化userData,直接在try中获取值后返回,错误情况返回null或者处理后返回:

Future<Response?> userRegistration({required RegisterInfoReq requestData}) async {
  try {
    final userData = await WebUtil.createDio().post('/Candidate/RegisterCandidate', data: requestData);
    if (kDebugMode) {
      print('User Info: ${userData}');
    }
    return userData;
  } on DioError catch (e) {
    // 错误处理代码
    if (kDebugMode) {
      if (e.response != null) {
        print('Dio error!');
        print('STATUS: ${e.response?.statusCode}');
        print('DATA: ${e.response?.data}');
        print('HEADERS: ${e.response?.headers}');
      } else {
        print('Error sending request!');
        print(e.message);
      }
    }
    return null;
  }
}

这样修改后,调用页面就能获取到正确的响应数据了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 01:12:30