【问题标题】:How to write condition statements in flutter?如何在flutter中编写条件语句?
【发布时间】:2018-12-17 22:03:52
【问题描述】:

我想了解如何在我的颤振代码中应用“if”条件?因为我是飞镖语言编码的新手。

假设在如下代码中,我想添加条件,如果计数器的值为 1,则“您已按下按钮 $_counter 时间”否则“您已按下按钮 $_counter 次"

children: <Widget>[

        new Text(
          'You have pushed the button $_counter times:',
        )/*,
        new Text(
          '$_counter',
          style: Theme.of(context).textTheme.display1,
        ),*/
]

附:它只是一个简单的例子,让我了解如何在颤振中使用 if 条件。

【问题讨论】:

  • 什么代码,什么条件?请提供一个具体的例子。
  • 寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。见:How to create a Minimal, Complete, and Verifiable example.
  • 我只需要flutter中“if”条件的语法。
  • 视情况而定有几种方法,所以需要一个或多个具体例子。
  • 我建议在提出具体问题之前阅读更多有关 Dart 语言的信息。从dartlang.org/guides/language开始

标签: android-studio dart flutter


【解决方案1】:

对于这种简单的情况,您可以在字符串插值中使用三元 if ?:

    new Text(
      'You have pushed the button $_counter time${_counter != 1 ? 's' : ''}:',
    )

【讨论】:

  • 多个错误,例如期望类成员,期望找到';'等,我不知道要添加和排除什么!
  • 抱歉,在您发表第一条评论后,我查看了代码 10 次,但没有看到。我有一个: 而不是?。我更新了我的答案。
  • 别抱歉,我的名声已经因为模棱两可的问题而下降了!即使在更改之后,错误仍然存​​在。
  • 我需要更多信息。我无法想象这与我发布的代码有关。您能否在您的问题中添加屏幕截图以及导致错误的代码?
【解决方案2】:

如果你只有一个条件,那么你可以使用基本的三元运算符,

child: Text(
     '{fee=="FREE"?"Free":fee}',
     ),

但是,如果您有多个条件或值需要从索引位置进行比较(即您必须获取值然后需要放入条件),那么您可以在 Widget 中添加方法作为文本值,如下所示:

child: Text(
  '${checkForPrice(index)}',
  ),
),

checkForPrice(int index) {
String strFee = data['payload']['webinar'][index]['fee'];
String finalFee = "";
if (strFee == "FREE") {
  finalFee = 'FREE';
} else {
  finalFee = '\$ ${data['payload']['webinar'][index]['fee']}';
}

return finalFee;}

这肯定会帮助您显示具有多种条件的数据。

【讨论】:

    【解决方案3】:

    我第一次尝试颤振时我不知道飞镖语言是什么,但经过一些浏览后我发现this 有用的文档。您可以在此处找到您要查找的任何内容,包括您所询问的 if 语句。但我可以告诉你 if 语句的工作方式与任何其他语言(如 JavaScript、Java 等)相同。

    编辑:这里我给你一些例子如何在flutter中使用它

    Future<Null> toTheHomeScreen() async {
    await _signInWithGoogle();
    SharedPreferences sprefs = await SharedPreferences.getInstance();
    if (sprefs.getString('idToken').isNotEmpty) {
      new Future.delayed(new Duration(seconds: 3), () {
        new CircularProgressIndicator();
        Navigator.of(context).push(
          new MaterialPageRoute(
            builder: (BuildContext context) {
              return new HomeScreen();
            }
          )
        );
      });
    } else {
      Navigator.of(context).pop();
    }
    

    }

    if 语句检查 sharedpref 中是否存储了名为 'idToken' 的键,如果不为空,用户将重定向到主页。

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 2018-10-19
      • 2011-08-08
      • 1970-01-01
      • 1970-01-01
      • 2017-02-03
      • 2010-12-25
      • 2010-12-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多