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>[
...
}
希望能解决您的问题!
我已经检查了具有相同错误消息的问题,但他们的解决方案似乎不适用于我的。其实我想实现一个简单的事情,现在它让我整天发疯。我在一页上有一个包含多个容器的列。其中一个 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>[
...
}
希望能解决您的问题!