Flutter 将新项目添加到列表将删除旧项目

Flutter 将新项目添加到列表将删除旧项目,flutter,dart,Flutter,Dart,各位颤振专家大家好 我是个新手,喜欢为它编码。我遇到了一个奇怪的问题:当我将一个项目添加到一个项目列表时,旧项目会被覆盖,但计数是正确的。例如,我添加(姓名:电话,数量:1,价格:99.99)的结果是相同的,但当我添加(姓名:衬衫,数量:2,价格:49.99)的结果是相同的 (名称:衬衫,数量:2,价格:49.99) (名称:衬衫,数量:2,价格:49.99) 所以第一张唱片就不见了 请检查下面的代码段 你能告诉我我做错了什么吗 谢谢, -肚脐 List parcelItems=List();

各位颤振专家大家好

我是个新手,喜欢为它编码。我遇到了一个奇怪的问题:当我将一个项目添加到一个项目列表时,旧项目会被覆盖,但计数是正确的。例如,我添加(姓名:电话,数量:1,价格:99.99)的结果是相同的,但当我添加(姓名:衬衫,数量:2,价格:49.99)的结果是相同的

  • (名称:衬衫,数量:2,价格:49.99)
  • (名称:衬衫,数量:2,价格:49.99)
  • 所以第一张唱片就不见了

    请检查下面的代码段

    你能告诉我我做错了什么吗

    谢谢, -肚脐

    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(),
                      ),