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
调用中读取它。