【问题标题】:Returning an integer in dart在飞镖中返回一个整数
【发布时间】:2018-12-21 20:50:02
【问题描述】:

我想做这样的事情:

int _radioValueGender == _radioValueGender

void setRadioValueGender(DocumentSnapshot document) {
    if (document['gender']=='female') {
        return _radioValueGender == 0;
    }
    else {
        return _radioValueGender == 1;
    }
}

我根据 if/else 语句的结果设置整数 _radioValueGender 的值。我将非常感谢任何帮助。我希望这很容易,这似乎只是一个知道正确方法的问题。对于给您带来的任何不便,我深表歉意,并在此先感谢您。

【问题讨论】:

    标签: firebase dart flutter


    【解决方案1】:
    1. == 是相等 comparison 运算符。它不做变量赋值

    2. setRadioValueGender 被声明为具有void 返回类型。从中返回值是不正确的。

    你想要的是:

    void setRadioValueGender(DocumentSnapshot document) {
      if (document['gender']=='female') {
        _radioValueGender = 0;
      } else {
        _radioValueGender = 1;
      }
    }
    

    或更简洁:

    void setRadioValueGender(DocumentSnapshot document) {
      _radioValueGender = (document['gender'] == 'female') ? 0 : 1;
    }
    

    【讨论】:

    • 非常感谢!有用!还有一个很好的解释 == vs =
    【解决方案2】:

    只需修改您的初始int _radioValueGender == _radioValueGender 声明并使其成为int _radioValueGender;。这样,它会强制该值是任何 int 对象。

    然后使用 setState(() {_radioValueGender = 0 }); 代替 result,以便在按下“setRadioValueGener”时修改您的变量。

    【讨论】:

      【解决方案3】:

      == 是一种比较,当您键入时,您是在询问左右两个值是否相等。 = 是一个赋值,当您键入它时,您将左侧的值分配到右侧。所以只需将其更改为:

        void setRadioValueGender(DocumentSnapshot document) {
      if (document['gender']=='female') {
        return _radioValueGender = 0;
      }
      else {
        return _radioValueGender = 1;
      }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-07-09
        • 1970-01-01
        • 1970-01-01
        • 2022-12-04
        • 1970-01-01
        • 2020-11-28
        • 2020-07-14
        • 1970-01-01
        相关资源
        最近更新 更多