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

Flutter注册接口调用后如何获取user id用于创建用户资料页

实现方案

你可以通过两种常用方式拿到并传递注册生成的user id:

方案1:路由传参(适合仅后续几个页面使用的场景)

你当前注册成功后会先跳转到Otp验证页,只需要把user id沿着页面跳转链路传递即可:

  1. 首先从注册接口的返回结果中提取user id,先看你print(rsp)的输出,确认后端返回的user id字段名(通常为user_id或userId)
  2. 给OtpScreen新增userId构造参数:
class OtpScreen extends StatelessWidget {
  final String emailValue;
  // 新增userId参数
  final String userId;
  const OtpScreen({
    super.key,
    required this.emailValue,
    required this.userId
  });
  // 其余原有代码
}
  1. 注册成功跳转时把user id传入Otp页:
if (rsp['status'] == true) {
  // 字段名和后端返回保持一致
  String userId = rsp['user_id'].toString();
  Navigator.push(
    context,
    MaterialPageRoute(
      builder: (context) => OtpScreen(
        emailValue: email.text,
        userId: userId
      )
    ),
  );
}
  1. Otp验证通过后跳转资料创建页时,同理给资料创建页加userId构造参数,把OtpScreen中拿到的userId传入即可,调用createProfile接口时直接传入该参数就行。

方案2:本地持久化存储(适合全APP多处需要使用user id的场景)

可以直接把user id存在本地存储,任意页面需要时直接读取,不需要逐层传参:

  1. 先在pubspec.yaml中添加依赖:
dependencies:
  shared_preferences: ^2.2.2
  1. 注册成功后把user id存入本地:
if (rsp['status'] == true) {
  String userId = rsp['user_id'].toString();
  final prefs = await SharedPreferences.getInstance();
  // 存入本地
  await prefs.setString('login_user_id', userId);
  Navigator.push(
    context,
    MaterialPageRoute(builder: (context) => OtpScreen(emailValue: email.text,)),
  );
}
  1. 在资料创建页需要调用接口时,直接读取本地存储的user id即可:
// 调用createProfile前读取
final prefs = await SharedPreferences.getInstance();
String? userId = prefs.getString('login_user_id');
if(userId != null){
  // 直接调用创建资料接口
  createProfile(userId, name, profileImage, 其余参数...);
}

注意事项

  • 提取user id时的key必须和后端返回的响应字段完全一致,可通过打印rsp的结果确认字段名
  • 操作本地存储时注意判空,避免空异常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 19:24:05