如何解决使用SharedPreferences中的令牌承载编辑配置文件数据波动
我使用Postman令牌承载创建了登录功能,即使应用程序已关闭,该功能也允许用户保持登录状态。 现在,我想编辑已登录到应用程序中的电子邮件和个人资料密码,然后使用保存的Sharpref中的相同令牌载体将其保存。
如何实施。下面是我获取数据的代码,但是此代码仍然有错误。
getPerfs() async {
WidgetsFlutterBinding.ensureInitialized();
SharedPreferences prefs = await SharedPreferences.getInstance();
var apikey = prefs.getString('apikey');
print(apikey);
}
var url = 'http://api.batulimee.com/v1_ship/my_profile';
Future<Map> getData() async {
var fullUrl = url + await getPerfs();
var response = await http.post(fullUrl);
return json.decode(response.body) as Map<String,dynamic>;
}
这是API网址my_profile中的json结构。
{
"status": "success","data": {
"id_user": 49,"id_role": "8","name_role": "Ship Owner","first_name": "a","last_name": "f","email": "afriansyahm86@gmail.com","phone": "082258785595","saldo": "0","company_name": "aa","company_address": "jl kav pgri","photo": "https://batulimee.com/foto_user/avatar.png"
},"message": "get profile detail successfully "
}
如果要获取它,则必须使用Postman授权令牌载体。
如何获取所有这些数据并进行编辑?
解决方法
第一件事是您的getPerfs()方法中,我可以看到您正在保存apikey,但是其他方法(在您的情况下为getData())无法访问它。
我会做些不同的事情,
Future<Map<String,dynamic>> getData() async {
try {
var url = 'http://api.batulimee.com/v1_ship/my_profile';
SharedPreferences prefs = await SharedPreferences.getInstance();
var apikey = prefs.getString('apikey');
var response = await http.post(
url,headers: {
"Accept": "application/json","Content-Type": "application/json","Bearer Token" : apikey
},);
var checkResponse = json.decode(response.body) as Map<String,dynamic>;
print('checkResponse');
return checkResponse;
} catch (e) {
print(e);
throw(e);
}
}
只需复制并粘贴此代码,您将获得数据,但我建议您将提取的数据保存在变量中,而不是返回数据。
还有一件事,这可能是get API而不是post API,因为您在请求有效负载中没有提供任何内容。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。