Flutter:如何有条件地添加小部件

时间:2019-07-17 12:01:04

标签: flutter

如果没有返回任何数据,我想在正文中添加一个文本小部件。否则,我想显示数据。但是,返回以下错误:

flutter: type '_CompactLinkedHashSet<Widget>' is not a subtype of type 'Widget'

我的代码:

body: SafeArea(
  child: (isLoading)
    ? Center(
         child: new CircularProgressIndicator(),
      )
    : Stack(
         children: <Widget>[
            (jobDetail == null && !isLoading)
                ? noDataFound()
                : {
                     detailWidget(context, jobDetail),
                      applyWidget(context, jobDetail)
                  }
          ],
      ),
),

这是我的文本小部件代码

Widget noDataFound() {
    return Container(
      child: Center(
          child: Padding(
        padding: const EdgeInsets.all(8.0),
        child: Text(
          "We could not get the detail. Please try again later",
          textAlign: TextAlign.center,
          style: TextStyle(fontSize: 20.0),
        ),
      )),
    );
  }

1 个答案:

答案 0 :(得分:3)

您正试图按照错误消息的说明将小部件的哈希集分配给堆栈({...}部分使其成为哈希集)。解决此问题的最简单方法是更改​​三元运算符的位置。

示例归结为核心问题:

Stack(
  children: (jobDetail == null && !isLoading)
    ? [
        Container(),
      ]
    : [
        Container(),
        Container(),
      ],
),