I am facing problem while trying to encode Json data to a List of String
CartRepo.dart
<pre> <code>
<pre> <code>
import 'dart:convert';
import 'package:ecommerceapp/models/cart_model.dart';
import 'package:ecommerceapp/utils/app_constants.dart';
import 'package:shared_preferences/shared_preferences.dart';
class CartRepo {
final SharedPreferences sharedPreferences;
CartRepo({required this.sharedPreferences});
List<String> cart = [];
void addToCartList(List<CartModel> cartList) async {
cart = [];
cartList.forEach((element) {
return cart.add(jsonEncode(element.toJson()));
});
sharedPreferences.setStringList(AppConstants.CART_LIST, cart);
getCartList();
}
List<CartModel> getCartList() {
List<String> carts = [];
if (sharedPreferences.containsKey(AppConstants.CART_LIST)) {
carts = sharedPreferences.getStringList(AppConstants.CART_LIST)!;
}
List<CartModel> cartList = [];
carts.forEach(
(element) => cartList.add(CartModel.fromJson(jsonDecode(element))));
return cartList;
}
}
CartModel.dart
import 'package:ecommerceapp/models/popular_products.dart';
class CartModel {
int? id;
String? name;
int? price;
String? img;
int? quantity;
bool? isExist;
String? time;
ProductModel? product;
CartModel({
this.id,
this.name,
this.price,
this.img,
this.quantity,
this.isExist,
this.time,
this.product,
});
CartModel.fromJson(Map<String, dynamic> json) {
this.id = json['id'];
this.name = json['name'];
this.price = json['price'];
this.img = json['img'];
this.quantity = json['quantity'];
this.isExist = json['isExist '];
this.time = json['time'];
this.product = ProductModel.fromJson(json['product']);
}
Map<String, dynamic> toJson() {
return {
"id": this.id,
"name": this.name,
"price": this.price,
"img": this.img,
"quantity": this.quantity,
"isExist": this.isExist,
"time": this.time,
"product": this.product!.toJson,
};
}
}
<pre> <code>
PopularProducts.dart
<pre> <code>
class Product {
int? _totalSize;
int? _typeId;
int? _offset;
List<ProductModel> _products = [];
List<ProductModel> get products => _products;
Product(
{required totalSize,
required typeId,
required offset,
required products}) {
this._totalSize = totalSize;
this._typeId = typeId;
this._offset = offset;
this._products = products;
}
Product.fromJson(Map<String, dynamic> json) {
_totalSize = json['total_size'];
_typeId = json['type_id'];
_offset = json['offset'];
if (json['products'] != null) {
_products = <ProductModel>[];
json['products'].forEach((v) {
_products.add(ProductModel.fromJson(v));
});
}
}
}
class ProductModel {
int? id;
String? name;
String? description;
int? price;
int? stars;
String? img;
String? location;
String? createdAt;
String? updatedAt;
int? typeId;
ProductModel(
{this.id,
this.name,
this.description,
this.price,
this.stars,
this.img,
this.location,
this.createdAt,
this.updatedAt,
this.typeId});
ProductModel.fromJson(Map<String, dynamic> json) {
id = json['id'];
name = json['name'];
description = json['description'];
price = json['price'];
stars = json['stars'];
img = json['img'];
location = json['location'];
createdAt = json['created_at'];
updatedAt = json['updated_at'];
typeId = json['type_id'];
}
Map<String, dynamic> toJson() {
return {
"id": id,
"name": name,
"price": price,
"img": img,
"location": location,
"createdAt": createdAt,
"updatedAt": updatedAt,
"typeId": typeId,
};
}
}
<pre> <code>
Error :
Unhandled Exception:Converting object to an encodable object