【发布时间】:2021-05-21 08:42:02
【问题描述】:
我正在使用提供程序包作为状态管理解决方案,效果很好。
负责在整个应用程序中提供数据的主要对象具有列表变量。 它是一个扩展的 ChangeNotifier 对象,如下所示:
class DataSource with ChangeNotifier {...}
我有 setter 和 getter 来管理变量。
当我尝试在 DataSource 类的函数内克隆列表变量时,它实际上从未克隆列表。
void cloneList() {
List<dynamic> list1 = [[Jack, 0], [Jane, 1]];
List<dynamic> list2 = List.from(list1);
list2.shuffle();
print(list1);
print(list2);
list1 和 list2 是完全相同的表!
关于这个问题的有趣之处在于,当我在我的无状态小部件中执行相同的操作时它运行良好!
我只能找到两个操作之间的一个区别;
- 带有 ChangeNotifier 的对象变量
- 实例变量
你有什么办法解决这个问题吗?
注意:作为一个很好的解决方案是使用 List.Generate 函数创建另一个列表,但它很难管理。
非常感谢您。
【问题讨论】: