如何获得在创建配置文件页面注册后创建的用户id



通过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,以便在个人资料创建和图像上传中使用它,请帮助

您可以将用户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对象,并使用provider package (https://pub.dev/packages/provider)访问任何你想要的地方