【发布时间】:2020-08-21 15:28:23
【问题描述】:
我已经检查了具有相同错误消息的问题,但他们的解决方案似乎不适用于我的。其实我想实现一个简单的东西,现在它让我整天发疯。我有一页上有几个 CONTAINERS 的 COLUMN。其中一个 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 语句问题的状态类中工作正常(在 if 语句上方有对全局变量的引用)。但是,在小部件定义(我的第二个 sn-p)中,我收到了变量的“未定义名称”错误。
【问题讨论】:
-
使用三元运算符代替 if 语句。
step1Expanded? step1RowWidget() : Container() -
耶稣...这花了我几个小时。如果您输入它作为答案,我可以接受。知道为什么全局变量只能在 State 类中访问,而不能在 Widget 定义中访问(都在同一个 dart 文件中)? @ShriHari
-
是的!我做到了!
标签: flutter dart identifier