Я разрабатываю приложение для доставки в ресторан, и у меня возникают проблемы при добавлении одного и того же продукта в список, но с другими значениями, оно перезаписывает значение из старых.
У меня есть магазин BaseStore, который имеет объект "Bag" в качестве наблюдаемого.
abstract class _BaseStore with Store {
@observable
Bag bag = Bag(
products: ObservableList<Product>()
);
@action
addProduct(Product product){
bag,products.add(products);
}
}
Я регистрирую BaseStore как Singleton, используя пакет get_it: https://pub.dev/packages/get_it
GetIt.I.registerSingleton<BaseStore>(BaseStore());
Класс Bag имеет объект ObservableList объекта Product.
class Bag {
ObservableList<Product> products;
}
В классе Product есть больше переменных, но я покажу только эти две для примера:
class Product {
String name;
List<Option> options;
}
class Option {
String optionSelected;
List<ItemOption>
}
class ItemOption {
String name;
}
Я пытаюсь добавить два products, оба имеют одинаковые значения, единственным отличием является String "optionSelected" из класса "Option", который в приведенном ниже примере создал два продукта, и они имеют разные значения "optionSelected" (Diet и другие Normal).
Product product1 = Product(
name: "Coke",
options: [
Option(optionSelected: "Diet")
]
);
Product product2 = Product(
name: "Coke",
options: [
Option(optionSelected: "Normal")
]
);
Я вызываю действие из синглтона и печатаю значения.
GetIt.instance<BaseStore>().addProduct(product1);
GetIt.instance<BaseStore>().addProduct(product2);
bag.products.forEach((product){
product.options.forEach((option)=> print(option.optionSelected));
});
выводит:
Normal
Normal
Когда я добавляю второй продукт со всеми теми же значениями, Кроме одно значение из внутреннего списка (Option's optionSelected) изменяет все значения продуктов из списка в соответствии с последним добавленным.
Пример при добавлении другого продукта, некоторых других значений, проблема не возникает: https://i.imgur.com/ULzdPRM.mp4
При добавлении одного и того же продукта, но с другой опциейВыбрано и количество: https://i.imgur.com/vlgKkq5.mp4