You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 08:39:45