【问题标题】:Flutter: "Expected an Identifier" and "Expected to find ')'" when inserting "if" within containerFlutter:在容器中插入“if”时,“期望一个标识符”和“期望找到')'”
【发布时间】: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


【解决方案1】:

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

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>[
   ...     
}

希望能解决您的问题!

【讨论】:

    猜你喜欢
    • 2020-09-25
    • 2014-09-02
    • 2016-12-31
    • 2012-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-09
    相关资源
    最近更新 更多