Flutter中如何在for循环中使用洗牌后的列表?
列表洗牌后在for-in循环中使用的正确实现方法
问题核心是**shuffle()方法的返回值为void**,并非列表本身,所以直接将其赋值给变量或在循环中调用,都会因类型不匹配报错。
正确实现步骤:
- 先创建并合并目标列表
- 单独调用
shuffle()对列表进行打乱操作 - 使用处理好的列表进行for-in循环
完整代码示例:
const availablePlaycards = [ Playcard(front: 'back.png', back: 'sheep.png'), Playcard(front: 'back.png', back: 'cow.png'), Playcard(front: 'back.png', back: 'pig.png'), ]; // 1. 创建并合并列表 var doubledCards = List.from(availablePlaycards)..addAll(clonedCards); // 2. 单独调用shuffle打乱顺序 doubledCards.shuffle();
在children循环中直接使用处理后的列表:
children: [ for (final playcard in doubledCards) // 这里添加你的Playcard渲染逻辑 PlaycardItem(playcard: playcard), ],
错误原因说明:
- 原写法
var doubledCards = (...).shuffle();中,shuffle()执行后返回void,导致doubledCards类型为void,无法作为迭代器使用 - 直接在循环中写
doubledCards.shuffle()同样无效,因为该方法不返回可迭代的列表对象
内容的提问来源于stack exchange,提问作者Gunnar Polte
相关产品推荐
相关产品推荐

