如何在Dart中使用for循环结合展开运算符构建列表以实现星级图标展示
解决Flutter中动态生成星级图标语法错误的问题
嘿,你的思路没问题——用展开运算符配合循环来根据book.rating生成对应数量的星级图标,只是语法上有个小细节没处理对,导致了那个错误提示。
错误根源
在Dart的集合字面量(比如[])里使用for循环时,不需要加箭头函数=>,直接在循环体内写要生成的Widget就可以了。你代码里的=>是多余的,这才触发了"expected an identifier and a ')' "的语法错误。
修正后的代码
child: Row( children: [ ...(for (var i = 0; i < book.rating; i++) Icon(Icons.star)) ], ),
另一种可选写法
如果你觉得集合内的for循环看着有点别扭,也可以用List.generate来创建图标列表,逻辑同样清晰:
child: Row( children: List.generate(book.rating, (_) => Icon(Icons.star)), ),
这里的_表示我们不需要用到循环的索引值,只是单纯生成对应数量的图标。
两种方式都能完美实现你想要的效果,选你觉得更易读的就行~
内容的提问来源于stack exchange,提问作者Susana Restrepo
相关产品推荐
相关产品推荐

