因此,我知道我的错误在于我在迭代数据时试图改变数据。
这是准确的错误
“期望在迭代期间进行非错误的并发修改:'LinkedMap‘的实例。
这是我的密码:
_products.forEach((key, value) {
if (key.titel == product.titel) {
_products[key] += 1;
} else {
_products[product] = 1;
}
}但我真的不明白如何在不迭代的情况下修改我的数据。有什么建议吗?
-我的尝试
var _products = {}.obs;
var temp = {}.obs;
void addProduct(Product product) {
temp = _products;
if (_products.length > 0) {
_products.forEach((key, value) {
if (key.titel == product.titel) {
temp[key] += 1;
} else {
temp[product] = 1;
}
});
}我也会犯同样的错误,我认为这是因为在这一行中:
temp = _products;我只是在_products上得到了参考&我不写_products
发布于 2022-07-26 22:28:12
因此,正如mmcdon所建议的,您需要复制您想要迭代的现有的东西&遍历,而不是原始的部分。
所以就我而言,我需要这样做:
var _products = {}.obs;
var temp = {}.obs;
void addProduct(Product product) {
temp = RxMap<dynamic, dynamic>.from(_products);
if (_products.length > 0) {
temp.forEach((key, value) {
if (key.titel == product.titel) {
_products[key] += 1;
} else {
_products[product] = 1;
}
});
}因此,正如您所看到的,我遍历了temp,这基本上就是_products &我在_products中编写我需要的数据
https://stackoverflow.com/questions/73127697
复制相似问题