【问题标题】:how to create mutliple objects of a single list如何创建单个列表的多个对象
【发布时间】:2021-01-24 05:04:24
【问题描述】:

我想从一个列表中创建 4 个新列表。我创建了这个,如果我在一个列表中进行一些更改,它会更改为所有这些。我想单独操作每个列表。

  List<DietModel> foodList = [];
  List<DietModel> breakFastList = [];
  List<DietModel> lunchList = [];
  List<DietModel> snacksList = [];
  List<DietModel> dinnerList = [];

 void getFoodList() async {
    foodList = await _dietPageRepositoryImpl.getAll();
    breakFastList =  foodList;
    lunchList = foodList;
    snacksList = foodList;
    dinnerList = foodList;
  }

【问题讨论】:

  • 不,它不工作
  • void getFoodList() async 这个声明绝不是一个好主意。无论您对列表有什么问题,这迟早也会成为问题。 aysnc 方法返回一个 Future&lt;&gt;,即使它只是一个 Future&lt;void&gt;

标签: flutter dart


【解决方案1】:

使用List.from(mynewlist) 而不是mylist = mynewlist

如果有人知道类的解决方法 - 那会很有趣!

【讨论】:

  • breakFastList = List.from(foodList);我试过了,但没有用
  • @LalitRawat 如果你描述它是如何不工作的,反复说它“不工作”是没有帮助的。当你尝试它时发生了什么?
  • @jamesdlin 这是什么原因?而且由于您似乎更有经验,有没有办法创建数据类对象的克隆实例?
  • 我在评论中链接的答案解释了为什么在大多数情况下你不应该使用List.from。不,没有通用的方法来克隆对象。
【解决方案2】:

首先你必须像你一样初始化你的列表

List<DietModel> foodList;
List<DietModel> breakFastList;
List<DietModel> lunchList;
List<DietModel> snacksList ;
List<DietModel> dinnerList;

然后在颤振initState 上,你必须告诉他们它们是一种列表。

@override
  void initState() {
    super.initState();

    foodList = List();
    breakFastList = List();
    lunchList = List();
    snacksList = List();
    dinnerList = List();
  }

最后,当您获取数据时,您可以将列表数据复制到其他 4 个列表。

void getFoodList() async {
    foodList = await _dietPageRepositoryImpl.getAll();

    breakFastList = List.from(foodList);
    lunchList = List.from(foodList);
    snacksList = List.from(foodList);
    dinnerList = List.from(foodList);
  }

【讨论】:

  • 如果这有帮助,请告诉我,因为我已经对其进行了测试并且对我有用。
【解决方案3】:

通过使用breakFastList = foodList;,您将breakFastList 设置为foodList,这意味着如果foodList 发生变化,breakFastList 也会发生变化。

通过使用breakFastList.addAll(foodList);,您可以将 foodList 中存在的每个项目单独添加到 breakFastList。这意味着如果您从 foodList 中删除一个项目,或者之后将一个项目添加到 foodList,breakFastList 将保持不变。

【讨论】:

    猜你喜欢
    • 2020-06-17
    • 1970-01-01
    • 1970-01-01
    • 2021-01-26
    • 2011-10-25
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 2011-10-29
    相关资源
    最近更新 更多