Flutter错误无法将元素类型'List'分配给列表类型'Widget'

时间:2021-08-01 04:33:55

标签: flutter dart flutter-dependencies

我想像这段代码那样在 if 条件下显示两个 SizedBox。

  body: Center(
    child: Column(
      mainAxisAlignment: MainAxisAlignment.center,
      children: <Widget>[
        Flexible(
          child: Row(
            mainAxisAlignment: MainAxisAlignment.spaceAround,
            children: <Widget>[
              if (randomNumber == 1)[
              
                SizedBox(
                  child: TextButton(
                    child: Image.asset('images/test1.jpg'),
                  ),
                ),

                SizedBox(
                  child: TextButton(
                    child: Image.asset('images/test2.jpg'),
                  ),
                ),
            ]

[ 行的 if (randomNumber == 1)[ 处,它显示这样的错误。

The element type 'List<SizedBox>' can't be assigned to the list type 'Widget'.dart(list_element_type_not_assignable)

如何在if条件下使用两个sizebox?

3 个答案:

答案 0 :(得分:0)

只需将“if() []”更改为“if() {}”即可。 If else 语句必须使用大括号 ({})。不是括号/数组 []

答案 1 :(得分:0)

正确的答案是,在 Widget 列表中,如果您想添加更多的项目列表,您需要使用“...”运算符。在这种情况下,它将是:

 Row(
    mainAxisAlignment: MainAxisAlignment.spaceAround,
    children: <Widget>[
      if (randomNumber == 1) ...[
          
        SizedBox(
          child: TextButton(
            child: Image.asset('images/test1.jpg'),
          ),
        ),

        SizedBox(
          child: TextButton(
            child: Image.asset('images/test2.jpg'),
          ),
        ),
    ],
)

答案 2 :(得分:0)

您正在返回列表列表。在 if 语句中包含 [],将其删除并使用 {} 代替。