Закрытая переменная Dart возвращает ноль в других функциях - PullRequest
0 голосов
/ 21 марта 2020

В dart _finalScore я объявил приватную переменную, которой позже присваивается значение или результат _finalScore = prevRes + currResult. Это работает хорошо, когда я устанавливаю значение в него, но после этого в другой функции, когда я пытаюсь получить приватную переменную в другой функции if(_finalScore > 25) return "Good Performace" в том же классе, она (_finalScore) возвращает ноль.

  CalculatorScore({this.prevScore, this.currScore});

  final int prevScore;
  final int currScore;

  double _finalScore;

  String calculateScore() {
    double _finalScore= prevScore + currScore;
    return _finalScore.toStringAsFixed(1);
  }

  String getScoreRemark() {
    if (_finalScore >= 60) {
      return "Good work";
    } else if (_finalScore > 50) {
      return "Work hard";
    } else {
      return "Poor performace";
    }
  }
}
calculateScore() works well with _finalScore receiving a value but _finalScore returns null in getScoreRemark()

Спасибо за помощь.

1 Ответ

1 голос
/ 21 марта 2020

Это происходит потому, что вы не устанавливаете значение переменной класса _finalScore, а вместо этого создаете новую локальную переменную внутри метода calculateScore:

String calculateScore() {
    double _finalScore = ...
    return ...
}

, вам следует удалить тип и назначить значение переменной

_finalScore = ...
...