当前位置: 首页 > 知识库问答 >
问题:

如何在Flutter小部件(中心小部件)的子属性中使用条件语句

樊浩初
2023-03-14
new Center(
  child: condition == true ? new Container() : new Container()
)
new Center(
  child: 
    if(condition == true){
      new Container();
    }else{
      new Container();
    }
)

有趣的是,我尝试了一个switch case语句,它给了我同样的警告,因此我无法运行代码。是我做错了什么,还是让人无法使用if/else或switch语句而不认为有死代码?

共有1个答案

曹钊
2023-03-14

实际上,您可以在dart/flutter中使用if/elseswitch以及任何其他内联语句。

class StatmentExample extends StatelessWidget {
  Widget build(BuildContext context) {
    return Text((() {
      if(true){
        return "tis true";}

      return "anything but true";
    })());
  }
}

ie将语句封装在函数中

(() {
  // your code here
}())

我强烈建议不要将太多的逻辑直接放在UI“标记”中,但我发现Dart中的类型推断需要做一些工作,所以它有时在类似的场景中很有用。

condition ? Text("True") : null,
children: [
  ...manyItems,
  oneItem,
  if(canIKickIt)
    ...kickTheCan
  for (item in items)
    Text(item)
child: getWidget()

Widget getWidget() {
  if (x > 5) ...
  //more logic here and return a Widget
  child: case2(myInput,
  {
    1: Text("Its one"),
    2: Text("Its two"),
  }, Text("Default"));
 类似资料:
  • 我正在尝试从Flutter中的父部件传递堆栈的高度,但我无法做到。请帮助我找到解决方案,我将把我的代码作为参考。 父小工具 子部件 如何将堆栈的高度传递给SVGPicture。

  • 问题内容: 我之前曾问过,但情况已经改变,今天我意识到我之前获得的解决方案存在严重问题。我的算法有些变化。 这是新代码: 使用此解决方案,每次我在FutureBuilder中有条件渲染的页面中导航时,BootScreen页面函数都会执行。所以这不是最好的…我需要在Future Builder内部执行导航而没有任何问题,如下所示: 因为返回值不是小部件,所以它当然不起作用。有什么办法吗? 编辑:感谢

  • 我来自像angular、react和vue这样的前端webframeworks,我很难找到编写可重用小部件样式的最佳方法。让我用一个例子来演示这个问题。 假设我们有这个小部件: 现在让我们假设我想让属性像、等可以通过参数改变。如果没有传递属性的某个参数,则应该使用其默认值,如下所示:

  • 我对编程比较陌生,我注意到,随着代码的增长,在2个文件(设置和主文件)中对所有内容进行编码会变得非常混乱。然而,当我将代码拆分成许多文件时,我遇到了无法导入fileB的问题。py简介文件a。py并在我的文件B中使用文件A中的变量或小部件(我得到未定义的名称错误)。 我将tkinter用于UI,因此我的主文件是tk循环(main.py)。每个按钮都引用不同文件中的函数。它运行良好,直到我的函数包含按

  • 每当我试图更改可见性的状态时,setState都不起作用,尽管在控制台中打印的消息被更正了。这是我的浮动操作按钮缠绕了几个小部件。问题是每当我点击它时,isVisible属性应该被更改为false,它应该是不可见的,但这并没有发生。“Pressed Undo”(按下撤消)打印在控制台中。