Flutter 颤振|无法将自定义模型列表保存到共享首选项
问题: 无法将自定义模型数据作为共享首选项保存到列表中 购物车型号:Flutter 颤振|无法将自定义模型列表保存到共享首选项,flutter,dart,flutter-layout,Flutter,Dart,Flutter Layout,问题: 无法将自定义模型数据作为共享首选项保存到列表中 购物车型号: Cart Class{ String id; Product product; String product_name; double quantity; String userId; Cart(); Map toMap() { var map = new Map<String, d
Cart Class{
String id;
Product product;
String product_name;
double quantity;
String userId;
Cart();
Map toMap() {
var map = new Map<String, dynamic>();
map['product_name'] = product.name;
map["id"] = id;
map["quantity"] = quantity;
map["user_id"] = userId;
return map;
}
}
Cart类{
字符串id;
产品;
字符串产品名称;
双倍数量;
字符串用户标识;
Cart();
映射toMap(){
var map=newmap();
map['product_name']=product.name;
map[“id”]=id;
地图[“数量”]=数量;
map[“user_id”]=userId;
返回图;
}
}
用法:
:
:
List<Cart> catchedCart = new List(2000); //initialization
:
:
updateSharedListCart(cartToBePassed, position) // cartToBePassed is an object of type Cart &
// position where to be added
:
:
:
updateSharedListCart(Cart cartToAppendDelete, int pos) async {
try {
SharedPreferences prefs = await SharedPreferences.getInstance();
prefs.setStringList("catchedCart[pos]", cartToAppendDelete);
setState(() {
catchedCart[pos]= prefs.getString('catchedCart[pos]');
});
} catch (e) {
print(e);
}
}
:
:
列表捕获车=新列表(2000)//初始化
:
:
updateSharedListCart(cartToBePassed,position)//cartToBePassed是Cart&
//添加位置
:
:
:
updateSharedListCart(Cart cartToAppendDelete,int-pos)异步更新{
试一试{
SharedReferences prefs=等待SharedReferences.getInstance();
prefs.setStringList(“catchedCart[pos]”,carttoapped和delete);
设置状态(){
catchedCart[pos]=prefs.getString('catchedCart[pos');
});
}捕获(e){
印刷品(e);
}
}
因此,Flatter返回错误:“参数类型‘Cart’无法分配给参数类型‘List’
”
有人可以帮助我使用自定义模型设置共享首选项的语法吗?示例将非常有用。您应该将prefs.getString('catchedCart[pos]”)强制转换为card您可以使用
prefs.setStringList(“catchedCart[pos]”,carttoapped和delete.toString())存储您拥有的Cart类的字符串代码>,但您需要一种读取存储字符串的方法。您可以在购物车类中创建类似于fromString
的函数,以便在setState
调用中读取它。