如何在创建个人资料页面中获取注册后创建的用户 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 数据库的用户数据,编辑数据并再次保存

登录 Firebase React Native Expo 后无法获取用户数据

按下提交按钮(HTML)后如何自动创建页面[关闭]

在jsp页面中如何获取到当前登录用户的角色id