您好Flutter专家
我是新手,很喜欢编写代码。我遇到一个奇怪的问题:将项目添加到项目列表时,旧项目被覆盖,但计数正确。例如,我添加(名称:电话,数量:1,价格:99.99)的结果是相同的,但是当我添加(名称:衬衫,数量:2,价格:49.99)时的结果是
所以第一条记录不见了。
请检查下面的代码段。
您能告诉我我在做什么错吗?
谢谢, -空
List<ParcelItem> parcelItems = List<ParcelItem>();
void addParcelItem(ParcelItem pi ){
parcelItems.add(pi);
}
Widget getItemList(){
List<Widget> widgetItems = List<Widget>();
for(ParcelItem itm in parcelItems){
Widget widgetItem = Column(
children: <Widget>[
Text(itm.name),
Text(itm.description),
Text(itm.quantity.toString()),
Text(itm.price.toString()),
],
);
widgetItems.add(widgetItem);
}
if(widgetItems != null){
return Column(
children: widgetItems,
);
}else{
return Text('Add some items', style: kInstructionText,);
}
}
答案 0 :(得分:0)
好的,我找到了问题并解决了!
“ void addParcelItem(ParcelItem pi)” pi是对变量的引用,该变量已初始化一次,并再次被使用n次。 Dart再次向同一变量添加了一个引用,因此再次删除了旧数据,但向列表中添加了两次。我在将项目添加到列表时通过创建ParcelItem对象来修复它。
谢谢你们的帮助
已删除
答案 1 :(得分:-1)
请尝试以下代码,而不要返回Column
:
return ListView(
children: widgetItems.map((element) {
return element;
}).toList(),
),
基本上,问题似乎在于您只返回了一个Column
,而并非全部出现在widgetItems