首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >元素类型'Set<TableRow>‘不能分配给列表类型'TableRow’

元素类型'Set<TableRow>‘不能分配给列表类型'TableRow’
EN

Stack Overflow用户
提问于 2022-08-05 17:38:36
回答 2查看 50关注 0票数 0

所以我有一个函数返回一个表行

代码语言:javascript
复制
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());

如果符合某一条件,我想描述一下这张表:

代码语言:javascript
复制
Table(
                                border: TableBorder.all(),
                                children: [
                                  if (cartController.totalNum(produkt)! <
                                      11)
                                      { buildRow(
                                          ["ab Menge", "Preis pro Stück"],
                                          isHeader: true),}

但我得到了以下错误:

不能将元素类型'Set‘分配给列表类型'TableRow’

如果没有if语句,我的代码可以完美地工作,我能做什么呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-08-05 17:53:21

在此代码中:

代码语言:javascript
复制
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包装在一个集合文本中。

代码语言:javascript
复制
Table(
  border: TableBorder.all(),
  children: [
    if (cartController.totalNum(produkt)! < 11)
      buildRow(["ab Menge", "Preis pro Stück"], isHeader: true),
  ],
),
票数 1
EN

Stack Overflow用户

发布于 2022-08-05 17:52:52

做得像

代码语言:javascript
复制
  if (cartController.totalNum(produkt)! < 11)
            buildRow(["ab Menge", "Preis pro Stück"], isHeader: true),

处理条件条件的其他方法

代码语言:javascript
复制
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);
    }()
  ],
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73253495

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档