如何在颤动中使用带有容器小部件的 if 语句

Posted

技术标签:

【中文标题】如何在颤动中使用带有容器小部件的 if 语句【英文标题】:How can use if statement with Container widget in flutter 【发布时间】:2020-11-24 13:48:29 【问题描述】:

我想在容器小部件中使用 if 语句,如下代码:

if (int.parse(m_id) > int.parse(cm_id) || int.parse(d_id) > 4)
    
      Container(
         width: 0.23 * size,
         height: 0.23 * size,
         child: Image.asset('assets/images/days/day4k.png'),
     ),

但它得到错误:

The element type 'Set<Container>' can't be assigned to the list type 'Widget'

有没有办法修复这个错误?

【问题讨论】:

去掉大括号 @Yann39 那么如果我在此之后有其他声明? 很遗憾,您不能有 else 语句,使用另一个 if 或将代码移到返回小部件的函数中。 非常感谢我使用了两次 if 语句并且它有效 @Yann39 你可以有一个 else 语句,看看我的回答 【参考方案1】:

如果if statement 在颤振小部件中,则不应使用大括号

if (int.parse(m_id) > int.parse(cm_id) || int.parse(d_id) > 4)
      Container(
         width: 0.23 * size,
         height: 0.23 * size,
         child: Image.asset('assets/images/days/day4k.png'),
   ),

上面应该可以正常工作

如果你确实有一个if else statement,你仍然不会使用大括号,只需删除第一个小部件末尾的,

if (int.parse(m_id) > int.parse(cm_id) || int.parse(d_id) > 4)
    Container(
       width: 0.23 * size,
       height: 0.23 * size,
       child: Image.asset('assets/images/days/day4k.png'),
    ) //no comma here
else
    Container(), //comma here

另外,如果你有 else if 声明,你也可以用同样的方式处理它

if (int.parse(m_id) > int.parse(cm_id) || int.parse(d_id) > 4)
    Container(
       width: 0.23 * size,
       height: 0.23 * size,
       child: Image.asset('assets/images/days/day4k.png'),
    ) //no comma here
else if (condition here)
    Container() //no comma here
else
    Container(), //comma here

【讨论】:

所以如果我在 if 之后有 else 语句,我该如何输入 else? 我刚刚添加了如何在 if else 情况下进行操作 不客气。我还更新了我的答案,以在 else if 声明中显示如何做,以防您将来需要它【参考方案2】:

它必须有效:

if (int.parse(m_id) > int.parse(cm_id) || int.parse(d_id) > 4)...[
    Container(
         width: 0.23 * size,
         height: 0.23 * size,
         child: Image.asset('assets/images/days/day4k.png'),
     ),
]

【讨论】:

所以如果我在 if 之后有 else 语句,我该如何输入 else? else 不是,但你可以这样写代码:if (!(int.parse(m_id) &gt; int.parse(cm_id) || int.parse(d_id) &gt; 4))...[ this is like else ]

以上是关于如何在颤动中使用带有容器小部件的 if 语句的主要内容,如果未能解决你的问题,请参考以下文章

如何在颤动中更改容器小部件中的背景图像

颤动中非动态容器小部件的水平轮播

请参阅附加的快照。我在颤动中通过容器创建了这样的圆形框。但我正在寻找小部件。颤振有一个小部件吗?

在恒定大小的容器中滚动小部件颤动网络

如何使小部件在颤动中相互浮动[关闭]

如何在颤动中间接调用另一个小部件中的 ontap 函数?