Flutter中多次shuffle后所有列表变量内容一致的问题求助
问题原因
Dart 中的 List 是引用类型,你当前的代码只是将多个变量指向同一个 List 实例(result)。所有的 shuffle() 操作都是在同一个列表上执行,最终所有变量自然会指向完全相同的内容。
解决方案
要得到4个独立的打乱后列表,你需要先为每个变量创建原列表的独立副本,再对副本执行打乱操作。以下是几种常用的实现方式:
方式1:使用 toList() 方法
List<HotAndNEwData> result = response.results; List<HotAndNEwData> pastYear = result.toList(); pastYear.shuffle(); List<HotAndNEwData> trending = result.toList(); trending.shuffle(); List<HotAndNEwData> southIndian = result.toList(); southIndian.shuffle(); List<HotAndNEwData> dramas = result.toList(); dramas.shuffle();
方式2:使用扩展运算符 [...]
List<HotAndNEwData> result = response.results; List<HotAndNEwData> pastYear = [...result]; pastYear.shuffle(); List<HotAndNEwData> trending = [...result]; trending.shuffle(); List<HotAndNEwData> southIndian = [...result]; southIndian.shuffle(); List<HotAndNEwData> dramas = [...result]; dramas.shuffle();
方式3:使用 List.from() 或 List.of()
List<HotAndNEwData> result = response.results; List<HotAndNEwData> pastYear = List.from(result); pastYear.shuffle(); List<HotAndNEwData> trending = List.of(result); trending.shuffle(); List<HotAndNEwData> southIndian = List.from(result); southIndian.shuffle(); List<HotAndNEwData> dramas = List.of(result); dramas.shuffle();
以上三种方式都会生成全新的 List 实例,每个实例持有原列表的元素副本,后续的 shuffle() 操作只会影响各自的列表,最终你会得到4个内容不同的打乱后列表。
内容的提问来源于stack exchange,提问作者Mohamed Shafeeq
相关产品推荐
相关产品推荐

