Flutter Dart:如何更改“类”列表中的类属性的值

时间:2019-09-28 12:55:32

标签: 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._internal();

  List<BasketItem> basketList = [];
  factory AppData() {
    return _appData;
  }
  AppData._internal();
}

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

我想执行以下操作:当onDismissed被执行时,我想将属性itemNote修改为'xxxxx'。我该怎么做?目前,我删除了已刷过的BasketItem,并创建了一个新的BasketItem,并将其添加到列表中。问题在于,这似乎效率不高,并且还会将项目添加到列表的末尾,而我希望将其保持在原来的位置/索引处。

谢谢

1 个答案:

答案 0 :(得分:1)

方法1

使0中的字段为非最终字段。所以您可以修改它们。

class A():
def __init__(self, **kwargs):
    self.obj_var = "I am obj var"

@classmethod
def class_method(cls):
    self = cls() # Here you are creating an instance of the class (in this case it is class A)
    print(self.obj_var) 
    cls.cls_obj = "I m class object"
    return cls.cls_obj

 print(A.class_method())

方法2

内联替换列表内容。不要删除并添加

BasketItem