как избежать дубликатов при добавлении в список моделя?

есть такой модель продукта:

import 'dart:convert';

List<Product> productFromJson(String str) =>
    List<Product>.from(json.decode(str).map((x) => Product.fromJson(x)));

String productToJson(List<Product> data) =>
    json.encode(List<dynamic>.from(data.map((x) => x.toJson())));

class Product {
  Product({
    this.id,
    this.name,
    this.categoryName,
    this.categoryId,
    this.description,
    this.price,
    this.imgMedium,
  });

  int id;
  String name;
  dynamic categoryName;
  dynamic categoryId;
  dynamic description;

  double price;

  String imgMedium;

  Product copyWith({
    int id,
    String name,
    dynamic categoryName,
    dynamic categoryId,
    dynamic description,
    double price,
    String imgMedium,
  }) =>
      Product(
        id: id ?? this.id,
        name: name ?? this.name,
        categoryName: categoryName ?? this.categoryName,
        categoryId: categoryId ?? this.categoryId,
        description: description ?? this.description,
        price: price ?? this.price,
        imgMedium: imgMedium ?? this.imgMedium,
      );

  factory Product.fromJson(Map<String, dynamic> json) => Product(
        id: json["id"],
        name: json["name"],
        categoryName:
            json["categoryName"] == null ? null : json["categoryName"],
        categoryId: json["categoryId"] == null ? null : json["categoryId"],
        description: json["description"],
        price: json["price"],
        imgMedium: json["imgMedium"],
      );

  Map<String, dynamic> toJson() => {
        "id": id,
        "name": name,
        "categoryName": categoryName,
        "categoryId": categoryId,
        "description": description,
        "price": price,
        "imgMedium": imgMedium,
      };
}

вот список продуктов в которую я буду добавлять загруженные продукты с API

List<Product> productList;

вот код который я добавляю продукты в список после получения ответа от API:

List jsonData = jsonDecode(value.result)["data"]["content"];
productList.addAll(productFromJson(jsonEncode(uniqueList).toString()));

после добавления встречаются одинаковые продукты, мне нужно избавиться в списке от них, как это прописать?


Ответы (1 шт):

Автор решения: MiT

Вместо List<Product> productList; используйте Set<Product> productList;

Set представляет неупорядоченный набор уникальных объектов.

Чтобы преобразовать productList в List, достаточно воспользоваться методом .toList().

→ Ссылка