List 颤振镖:如何更改类列表中类属性的值
您好,当类是类列表的一部分时,我很难理解如何管理类的属性 这是我的课List 颤振镖:如何更改类列表中类属性的值,list,class,flutter,dart,List,Class,Flutter,Dart,您好,当类是类列表的一部分时,我很难理解如何管理类的属性 这是我的课 class BasketItem { final String itemDescription; final String itemNote; BasketItem( {this.itemDescription, this.itemNote}); } class AppData { static final AppData _appData = new AppData._intern
class BasketItem {
final String itemDescription;
final String itemNote;
BasketItem(
{this.itemDescription,
this.itemNote});
}
class AppData {
static final AppData _appData = new AppData._internal();
List<BasketItem> basketList = [];
factory AppData() {
return _appData;
}
AppData._internal();
}
final appData = AppData();
class BasketItem{
最终字符串项描述;
最后的字符串项注释;
篮子物品(
{this.itemsdescription,
本文件(请参见});
}
类AppData{
静态最终AppData_AppData=新AppData._internal();
列表篮子列表=[];
工厂应用程序数据(){
返回appData;
}
AppData._internal();
}
最终appData=appData();
这是我的名单
List<Container> _buildBasketList() {
return appData.basketList.map((bList) {
var container = Container(
child: Builder(
builder: (context) => Dismissible(
key: Key(UniqueKey().toString()),
background: Container(
margin: EdgeInsets.all(8.0),
color: kColorAccent,
child: Align(
alignment: Alignment(-0.90, 0.00),
child: Icon(Icons.add_comment)),
),
onDismissed: (direction) {
final newItemToAdd = BasketItem(
itemDescription: bList.itemDescription,
itemNote: 'xxxxx',);
appData.basketList.add(newItemToAdd);
setState(() {});
appData.basketList.remove(bList);
},
child: Stack(...)
),
),
);
return container;
}).toList();
}
List\u buildBasketList(){
返回appData.basketList.map((bList){
var container=容器(
孩子:建筑工人(
生成器:(上下文)=>可驳回(
key:key(UniqueKey().toString()),
背景:集装箱(
边距:所有边集(8.0),
颜色:kColorAccent,
子对象:对齐(
对齐:对齐(-0.90,0.00),
子:图标(Icons.add_comment)),
),
onDismissed:(方向){
最终newItemToAdd=篮子项目(
itemDescription:bList.itemDescription,
项目注释:'xxxxx',);
appData.basketList.add(newItemToAdd);
setState((){});
appData.basketList.remove(bList);
},
子:堆栈(…)
),
),
);
返回容器;
}).toList();
}
我希望执行以下操作:当执行onDismissed
时,我希望将属性itemNote
修改为“xxxxx”。我怎么做?现在,我删除了我刷过的BasketItem,创建了一个新的BasketItem,并将其添加到列表中。问题是,这似乎效率不高,它还将该项添加到列表的末尾,而我希望它保持在原来的位置/索引
谢谢方法1
将BasketItem
中的字段设为非最终字段。所以你可以修改它们
class BasketItem {
final String itemDescription;
/*final*/ String itemNote;
BasketItem(
{this.itemDescription,
this.itemNote});
}
// onDismissed will change itemNote.
....
onDismissed: (direction) {
setState(() {
bList.itemNote = 'xxxxx';
});
},
...
方法2
内联替换列表内容。不要删除和添加
List<Container> _buildBasketList() {
return appData.basketList.asMap().map((index, bList) {
var container = Container(
child: Builder(
builder: (context) => Dismissible(
key: Key(UniqueKey().toString()),
background: Container(
margin: EdgeInsets.all(8.0),
color: kColorAccent,
child: Align(
alignment: Alignment(-0.90, 0.00),
child: Icon(Icons.add_comment)),
),
onDismissed: (direction) {
setState(() {
appData.basketList[index] = BasketItem(
itemDescription: bList.itemDescription,
itemNote: 'xxxxx',);
});
},
child: Stack(...)
),
),
);
return container;
}).toList();
}
列表(buildBasketList){
返回appData.basketList.asMap().map((索引,bList){
var container=容器(
孩子:建筑工人(
生成器:(上下文)=>可驳回(
key:key(UniqueKey().toString()),
背景:集装箱(
边距:所有边集(8.0),
颜色:kColorAccent,
子对象:对齐(
对齐:对齐(-0.90,0.00),
子:图标(Icons.add_comment)),
),
onDismissed:(方向){
设置状态(){
appData.basketList[索引]=BasketItem(
itemDescription:bList.itemDescription,
项目注释:'xxxxx',);
});
},
子:堆栈(…)
),
),
);
返回容器;
}).toList();
}