Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List 颤振镖:如何更改类列表中类属性的值_List_Class_Flutter_Dart - Fatal编程技术网

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();
}