Flutter:在容器中插入 "if" 时 "Expected an Identifier" 和 "Expected to find ')'"

Flutter: "Expected an Identifier" and "Expected to find ')'" when inserting "if" within container

我已经检查了具有相同错误消息的问题,但他们的解决方案似乎不适用于我的。其实我想实现一个简单的事情,现在它让我整天发疯。我在一页上有一个包含多个容器的列。其中一个 CONTAINERS 包含另一个 COLUMN,我想用位于 COLUMN 的第一个单元格中的 BUTTON 对其进行扩展。

所以我实现了这个内部 COLUMN,其中按钮作为第一个子项,容器作为第二个子项。我在“Container(”和“Child:”之间放置了 if 语句,什么不起作用,“if”在 Child: 之后都不起作用……有什么想法吗?

child: Column(
  children: <Widget>[
    CupertinoButton(
      child: Text('expand', style: TextStyle(color: CupertinoColors.activeBlue)),
      onPressed: () {
            setState(() {
                step1Expanded = !step1Expanded;
            });
       },
    ), //Button
    Container(
       child: if (step1Expanded) step1RowWidget()
       ...
    ),
  ], //Widget
), //Column

在错误调查中,我已经了解到我不能使用“if (step1Expanded) {”,因为此代码部分不允许使用大括号。这就是为什么我声明

Widget step1RowWidget()  {
   Row(
      children: <Widget>[
   ...     
}

另一个奇怪的问题:我在 main.dart 中定义了一个全局变量。这在我有 if 语句问题的 class 状态下工作正常(在 if 语句上方有对全局变量的引用)。但是,在小部件定义(我的第二个片段)中,我收到变量的“未定义名称”错误。

我可以给你一个想法。
第一期: 是的,不,如果允许的话。您可以使用三元运算符。像这样,

child: Column(
  children: <Widget>[
    CupertinoButton(
      child: Text('expand', style: TextStyle(color: CupertinoColors.activeBlue)),
      onPressed: () {
            setState(() {
                step1Expanded = !step1Expanded;
            });
       },
    ), //Button
    Container(
       child: step1Expanded ? step1RowWidget(): someOtherWidget()
       ...
    ),
  ], //Widget
), //Column

第二期:简单的解决方案是将该变量作为参数传递,然后使用它。像这样,

Container(
           child: step1Expanded ? step1RowWidget(variable): someOtherWidget()
           ...
 ),

Widget step1RowWidget(variable)  {
   Row(
      children: <Widget>[
   ...     
}

希望能解决您的问题!