如何在创建个人资料页面中获取注册后创建的用户 ID
Posted
技术标签:
【中文标题】如何在创建个人资料页面中获取注册后创建的用户 ID【英文标题】:How to get user id that create after signup in create profile page 【发布时间】:2021-11-29 22:49:29 【问题描述】:通过rest api注册后,我想在创建配置文件中获取用户ID,以便在我上传图像、视频和其他信息时使用它。这是我的注册 api
Future signupUser(String name, String email, String password, String type) async
String url = 'myapi';
try
final response = await http.post(Uri.parse(url),
body:
'name': name,
'email': email,
'password': password,
'type': type
);
var convertedDataJson = jsonDecode(response.body);
return convertedDataJson;
catch(e)
print(e);
这是我在注册后 api 后导航下一个屏幕
onPressed: () async
if (_formKey.currentState!.validate())
var nameController = name.text;
var emailController = email.text;
var passwordController = password.text;
var userType = _user;
var rsp = await signupUser(
nameController,
emailController,
passwordController,
userType.toString(),
);
print(rsp);
if (rsp['status'] == true)
Navigator.push(
context,
MaterialPageRoute(
builder: (context) =>
OtpScreen(emailValue: email.text,)),
);
else
print('signup failed');
注册后创建用户 ID,我想获取该用户 ID 个人资料页面如何获取它
这里是创建配置文件 api
Future<ProfileModel> createProfile(
String userId,
String name,
String profileImage,
String gender,
String age,
String height,
String position,
String country,
String countryFlag,
String clubName,
String clubLogo,
String bio,
) async
String url = 'api';
var response = await http.post(Uri.parse(url),
body:
'userId': userId,
'name': name,
'profileImage' : profileImage,
'gender': gender,
'age' : age,
'height': height,
'position': position,
'country': country,
'countryFlag': countryFlag,
'clubName': clubName,
'clubLogo': clubLogo,
'bio': bio
);
var createData = jsonDecode(response.body);
return createData;
我希望在注册后获取用户 ID,以便在个人资料创建和图片上传中使用它,请帮助
【问题讨论】:
signupUser 返回的对象长什么样?通常它会包含创建的 id。 @RaniSharim 我在注册后打印回复,看起来像这样 状态:true,消息:注册成功,数据:名称:abdl,类型:0,电子邮件:abdwll@gmail.com,otp:1234,id:105 如您所见,它已创建 id,我想在创建个人资料页面中获取此 id 我不明白问题是什么。如何获取 id 或如何使用 Flutter 将值传递给另一个页面? 【参考方案1】:您可以将用户 ID 保存在共享首选项 (https://pub.dev/packages/shared_preferences) 中,随时获取
保存id
Future<bool> setIsLogin() async
SharedPreferences prefs = await SharedPreferences.getInstance();
prefs.setBool('isLogin', true);
prefs.setString('token', _systemUserModel.token);
prefs.setString('id', _systemUserModel.id);
prefs.setString('status', _systemUserModel.status);
prefs.setString('email', _systemUserModel.email);
prefs.setString('name', _systemUserModel.name);
prefs.setString('tenantId', _systemUserModel.tenantId);
return true;
读取id
Future<bool> fetchIsLogin() async
SharedPreferences prefs = await SharedPreferences.getInstance();
bool isLogin = false;
if (prefs.containsKey('isLogin'))
if (prefs.getBool('isLogin')!)
String? token = prefs.getString('token');
String? id = prefs.getString('id');
String? status = prefs.getString('status');
String? email = prefs.getString('email');
String? name = prefs.getString('email');
String? tenantId = prefs.getString('tenantId');
_systemUserModel =
SystemUserModel(token!, id!, status!, email!, name!, tenantId!);
isLogin = true;
else
isLogin = false;
else
isLogin = false;
notifyListeners();
return isLogin;
您可以在注册/登录类中编写保存函数并读取函数,无论您需要什么读取 id
但最佳实践是在ChangeNotifierProvider
中设置此_systemUserModel
对象,并使用提供程序包(https://pub.dev/packages/provider)访问您想要的任何位置
【讨论】:
如果我使用 getstring 它将获得在 setstring 中定义的 id ?? @RashidAli 是的,您可以像这样设置和获取数据,它的工作方式是用于关键值的简单内部数据库,例如令牌、名称、配置文件 url 等以上是关于如何在创建个人资料页面中获取注册后创建的用户 ID的主要内容,如果未能解决你的问题,请参考以下文章
使用php创建应用程序ID后如何从facebook获取用户详细信息
如何:在注册/创建时设置 Firebase 用户的个人资料信息? (颤动网络)
如何在页面上显示来自 mongodb 数据库的用户数据,编辑数据并再次保存