将检索到的json转换为Flatter中的自定义对象列表
我正在尝试从共享首选项保存和检索自定义对象列表 这是我的保存功能将检索到的json转换为Flatter中的自定义对象列表,json,flutter,Json,Flutter,我正在尝试从共享首选项保存和检索自定义对象列表 这是我的保存功能 save(String key, value) async { final prefs = await SharedPreferences.getInstance(); prefs.setString(key, json.encode(value)); print(json.encode(value)); } 我正在保存一个产品列表: import 'category.dart'; import 'image.dart'
save(String key, value) async {
final prefs = await SharedPreferences.getInstance();
prefs.setString(key, json.encode(value));
print(json.encode(value));
}
我正在保存一个产品列表:
import 'category.dart';
import 'image.dart';
import 'rating.dart';
class Product{
int id;
String name_en,
name_ar,
description_en,
description_ar,
original_price,
stock,
final_price;
bool has_sale;
Category category;
Rating rating;
Image main_image;
Product(
{this.main_image,
this.name_en,
this.name_ar,
this.category,
this.description_ar,
this.description_en,
this.final_price,
this.has_sale,
this.rating,
this.original_price,
this.stock});
factory Product.fromJson(Map<String, dynamic> json) {
return Product(
main_image: json['main_image'] != null
? Image.fromJson(json['main_image'])
: null,
name_en: json['name_en'],
name_ar: json['name_ar'],
description_en: json['description_en'],
description_ar: json['description_ar'],
original_price: json['original_price'],
final_price: json['final_price'],
category: Category.fromJson(json['category']),
rating: Rating.fromJson(json['rating']),
has_sale: json['has_sale']
);
}
Map<String, dynamic> toJson() => {
'main_image': main_image,
'name_en': name_en,
'name_ar': name_ar,
'description_en': description_en,
'description_ar': description_ar,
'original_price': original_price,
'final_price': final_price,
'category': category,
'rating': rating,
'has_sale': has_sale
};
}
我的问题发生在尝试将json转换为产品列表时,下面是我要做的
var productsFromShared = await sharedPref.read("product");
var listNewProducts = productsFromShared as List;
List<Product> list =
listNewProducts.map((i) => Product.fromJson(i)).toList();
var productsFromShared=wait sharedPref.read(“产品”);
var listNewProducts=productsFromShared as List;
列表=
listNewProducts.map((i)=>Product.fromJson(i)).toList();
我遗漏了什么?要获取数据函数中的详细信息,请添加以下代码:
class Product{
Future<void> loadPastDetails() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
String storeKey = prefs.getString("Key");
if (storeUser != null) { // Load store key
Map<String, dynamic> jsonValue = json.decode(storeKey);
print('Details $storeKey');
// Do update operations
}
}
}
类产品{
Future loadPastDetails()异步{
SharedReferences prefs=等待SharedReferences.getInstance();
字符串storeKey=prefs.getString(“Key”);
如果(storeUser!=null){//加载存储密钥
Map jsonValue=json.decode(storeKey);
打印('Details$storeKey');
//执行更新操作
}
}
}
更新将JSON转换为值
Future<void> updateDetails(Map<String, dynamic> jsonValue) async {
name_en = jsonValue['name_en'] ?? this. name_en;
name_ar = jsonValue['name_ar'] ?? this. name_ar;
// and so on..
print(name_en);
}
Future updateDetails(Map jsonValue)异步{
name_en=jsonValue['name_en']??此.name_en;
name_ar=jsonValue['name_ar']??此.name_ar;
//等等。。
印刷品(姓名);
}
希望这有帮助 decode(storeKey)是一个产品列表,那么如何将映射转换为列表呢?什么不起作用?
Future<void> updateDetails(Map<String, dynamic> jsonValue) async {
name_en = jsonValue['name_en'] ?? this. name_en;
name_ar = jsonValue['name_ar'] ?? this. name_ar;
// and so on..
print(name_en);
}