所以我有一个函数返回一个表行
TableRow buildRow(List<String> cells, {bool isHeader = false}) => TableRow(
children: cells.map((cell) {
final style = TextStyle(
fontWeight: isHeader ? FontWeight.bold : FontWeight.normal,
fontSize: 18,
);
return Padding(
padding: const EdgeInsets.all(12.0),
child: Center(
child: Text(
cell,
style: style,
)),
);
}).toList());如果符合某一条件,我想描述一下这张表:
Table(
border: TableBorder.all(),
children: [
if (cartController.totalNum(produkt)! <
11)
{ buildRow(
["ab Menge", "Preis pro Stück"],
isHeader: true),}但我得到了以下错误:
不能将元素类型'Set‘分配给列表类型'TableRow’
如果没有if语句,我的代码可以完美地工作,我能做什么呢?
发布于 2022-08-05 17:53:21
在此代码中:
Table(
border: TableBorder.all(),
children: [
if (cartController.totalNum(produkt)! < 11)
{ buildRow(["ab Menge", "Preis pro Stück"], isHeader: true), }
],
),您使用的是一个收集如果,与标准的if语句不同,它不支持使用{}来表示if的主体,相反,它只支持作为主体的单个表达式。此外,{} (包含逗号分隔的值)是在dart中创建集文字的表达式。本质上,当您想要一个List<Set<TableRow>>时,您正在创建一个List<TableRow>。您所需要做的就是移除{},这样就不会将每个TableRow包装在一个集合文本中。
Table(
border: TableBorder.all(),
children: [
if (cartController.totalNum(produkt)! < 11)
buildRow(["ab Menge", "Preis pro Stück"], isHeader: true),
],
),发布于 2022-08-05 17:52:52
做得像
if (cartController.totalNum(produkt)! < 11)
buildRow(["ab Menge", "Preis pro Stück"], isHeader: true),处理条件条件的其他方法
body: Table(
children: [
if (1 < 2) buildRow(["ab Menge", "Preis pro Stück"], isHeader: true),
if (1 < 2 && 3.isEven)
buildRow(["ab Menge", "Preis pro Stück"], isHeader: true),
//inline function
() {
if (1 == 3)
return buildRow(["ab Menge", "Preis pro Stück"], isHeader: true);
else if (1 > 3)
return buildRow(["ab Menge", "Preis pro Stück"], isHeader: true);
else
return buildRow(["ab Menge", "Preis pro Stück"], isHeader: true);
}()
],https://stackoverflow.com/questions/73253495
复制相似问题