从API获取数据以及如何将其保存到SharePreference中时?
--> JSON Response
{ “数据”: { “ Cityname”:null, “ dob”:“ 7/07/2022”, “ deviceType”:“ 0”, “电子邮件”:“ “ mobileno”:“ 1234567891”, “ profile图像”:“”, “ userId”:“ 1”, “用户名”:“ xyz”, “ USERTYPE”:“ 3” },, “消息”:“成功登录”, “状态”:200 }}
---> API SERVICE
Future<Loginmodel?> login() async {
if (passwordController.text.isNotEmpty && nameController.text.isNotEmpty) {
var response = await http.post(
Uri.parse(
'XYZ',
),
headers: {"Content-Type": "application/json"},
body: (jsonEncode({
'UserName': nameController.text,
'Password': passwordController.text,
'DeviceToken': '',
'DeviceType': ''
})));
if (response.statusCode == 200) {
var data = jsonDecode(response.body);
print(data);
print(data['data']['UserID'].toString());
if (data['data']['UserID'] == null) {
ScaffoldMessenger.of(context)
.showSnackBar(SnackBar(content: Text("Invaild Credentials")));
} else {
Navigator.push(
context, MaterialPageRoute(builder: (context) => Homescreen()));
ScaffoldMessenger.of(context)
.showSnackBar(SnackBar(content: Text("Succesfully Credentials")));
}
// await Storage.write(key: "token", value: output["token"]);
}
} else {
ScaffoldMessenger.of(context)
.showSnackBar(SnackBar(content: Text("Black Field Not Allowed")));
}
}
--> JSON Response
{
"data": {
"CityName": null,
"DOB": "7/07/2022",
"DeviceType": "0",
"Email": "[email protected]",
"MobileNo": "1234567891",
"ProfileImage": "",
"UserID": "1",
"UserName": "xyz",
"UserType": "3"
},
"message": "Successfully login",
"status": 200
}
---> API SERVICE
Future<Loginmodel?> login() async {
if (passwordController.text.isNotEmpty && nameController.text.isNotEmpty) {
var response = await http.post(
Uri.parse(
'XYZ',
),
headers: {"Content-Type": "application/json"},
body: (jsonEncode({
'UserName': nameController.text,
'Password': passwordController.text,
'DeviceToken': '',
'DeviceType': ''
})));
if (response.statusCode == 200) {
var data = jsonDecode(response.body);
print(data);
print(data['data']['UserID'].toString());
if (data['data']['UserID'] == null) {
ScaffoldMessenger.of(context)
.showSnackBar(SnackBar(content: Text("Invaild Credentials")));
} else {
Navigator.push(
context, MaterialPageRoute(builder: (context) => Homescreen()));
ScaffoldMessenger.of(context)
.showSnackBar(SnackBar(content: Text("Succesfully Credentials")));
}
// await Storage.write(key: "token", value: output["token"]);
}
} else {
ScaffoldMessenger.of(context)
.showSnackBar(SnackBar(content: Text("Black Field Not Allowed")));
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
我建议您使用蜂巢。这是一篇具有适当指南的文章,可以在Hive中实施。 https://mukhtharcm.com/hive-custom-objects/
I'll suggest you to use hive. Here is an article with proper guide to implement that in Hive. https://mukhtharcm.com/hive-custom-objects/
您还可以使用 sqllite 作为sharedPreferances不支持对象
You'll could also use SQLlite as SharedPreferances doesn't support objects
仅针对原始数据而不是对象,我建议您使用sqlite,如果您熟悉sql数据库或hive hive for nosql
SharedPrefernces only for primitive data not objects i advice you to use sqlite if you re familiar with sql database or Hive for NoSql
使用
字符串
:在阅读时编写和解码时编码数据。这样的事情可以起作用:Use
String
: encode data when writing and decode when reading. Something like this could work: