Flutter 将新项目添加到列表将删除旧项目
各位颤振专家大家好 我是个新手,喜欢为它编码。我遇到了一个奇怪的问题:当我将一个项目添加到一个项目列表时,旧项目会被覆盖,但计数是正确的。例如,我添加(姓名:电话,数量:1,价格:99.99)的结果是相同的,但当我添加(姓名:衬衫,数量:2,价格:49.99)的结果是相同的Flutter 将新项目添加到列表将删除旧项目,flutter,dart,Flutter,Dart,各位颤振专家大家好 我是个新手,喜欢为它编码。我遇到了一个奇怪的问题:当我将一个项目添加到一个项目列表时,旧项目会被覆盖,但计数是正确的。例如,我添加(姓名:电话,数量:1,价格:99.99)的结果是相同的,但当我添加(姓名:衬衫,数量:2,价格:49.99)的结果是相同的 (名称:衬衫,数量:2,价格:49.99) (名称:衬衫,数量:2,价格:49.99) 所以第一张唱片就不见了 请检查下面的代码段 你能告诉我我做错了什么吗 谢谢, -肚脐 List parcelItems=List();
List parcelItems=List();
void addParcelItem(ParcelItem pi){
包裹。添加(pi);
}
小部件getItemList(){
List widgetItems=List();
用于(ParcelItem itm在parcelItems中){
Widget widgetItem=列(
儿童:[
文本(itm.名称),
文本(itm.说明),
文本(itm.quantity.toString()),
Text(itm.price.toString()),
],
);
添加(widgetItem);
}
if(widgetItems!=null){
返回列(
子项:widgetItems,
);
}否则{
返回文本('addsomeitems',样式:kInstructionText,);
}
}尝试以下代码,而不是返回
列
:
return ListView(
children: widgetItems.map((element) {
return element;
}).toList(),
),
基本上,问题似乎是您只返回了一个
列
,而不是全部出现在widgetItems中
好的,我找到了问题并解决了它
“void addParcelItem(ParcelItem pi)”pi是对一个变量的引用,该变量被初始化一次并再次使用。Dart再次向同一变量添加引用,因此删除了旧数据,但向列表中添加了两次。我在将项添加到列表时创建了ParcelItem对象,从而修复了此问题
谢谢你们的帮助
-Naveed上传更多代码请查看您的列表是否已加载一次或多次重新加载?显示完整的代码。看起来你做了些什么,你怎么知道第一张唱片不见了,你在控制台上打印了吗?因为,若你们只检查了用户界面,你们似乎并没有正确地刷新用户界面。你们的代码看起来仍然不完整。最可能的问题是您正在初始化
List parcelItems=List()代码>一次又一次导致旧值丢失。您应该只初始化它一次。
return ListView(
children: widgetItems.map((element) {
return element;
}).toList(),
),