Flutter中Table组件if条件下Set无法赋值给TableRow列表的错误求助
问题解决:Flutter Table条件渲染类型不匹配错误
你遇到的问题是因为在if条件判断里多余加了大括号{},Dart会把这个大括号解析成Set(集合),而Table.children需要的是TableRow类型的列表元素,所以出现了类型不匹配的错误。
修正方法
直接去掉if语句块里的大括号,让buildRow的返回值直接作为列表元素:
Table( border: TableBorder.all(), children: [ if (cartController.totalNum(produkt)! < 11) buildRow( ["ab Menge", "Preis pro Stück"], isHeader: true, ), // 其他TableRow元素... ], )
原因说明
在Dart的集合字面量(比如这里的[]列表)中,使用if条件添加元素时,若只有单个表达式,不需要用大括号包裹。如果加了大括号,Dart会把它识别为一个Set实例({buildRow(...)}是Set字面量),而Set无法直接赋值给需要TableRow的列表位置,就会触发类型错误。
如果你的if块里需要执行多个语句,才需要用大括号,但此时要确保最终返回的是单个TableRow或者用...展开一个列表,比如:
if (condition) ...[ buildRow(...), buildRow(...), ],
内容的提问来源于stack exchange,提问作者Nikita
相关产品推荐
相关产品推荐

