Flutter注册接口调用后如何获取user id用于创建用户资料页
实现方案
你可以通过两种常用方式拿到并传递注册生成的user id:
方案1:路由传参(适合仅后续几个页面使用的场景)
你当前注册成功后会先跳转到Otp验证页,只需要把user id沿着页面跳转链路传递即可:
- 首先从注册接口的返回结果中提取user id,先看你
print(rsp)的输出,确认后端返回的user id字段名(通常为user_id或userId) - 给
OtpScreen新增userId构造参数:
class OtpScreen extends StatelessWidget { final String emailValue; // 新增userId参数 final String userId; const OtpScreen({ super.key, required this.emailValue, required this.userId }); // 其余原有代码 }
- 注册成功跳转时把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 ) ), ); }
- Otp验证通过后跳转资料创建页时,同理给资料创建页加
userId构造参数,把OtpScreen中拿到的userId传入即可,调用createProfile接口时直接传入该参数就行。
方案2:本地持久化存储(适合全APP多处需要使用user id的场景)
可以直接把user id存在本地存储,任意页面需要时直接读取,不需要逐层传参:
- 先在
pubspec.yaml中添加依赖:
dependencies: shared_preferences: ^2.2.2
- 注册成功后把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,)), ); }
- 在资料创建页需要调用接口时,直接读取本地存储的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
相关产品推荐
相关产品推荐

