我得到了一个错误Null检查运算符用于一个Null值


int _genelScore = 0;
@override
void initState() {
super.initState();
_setScore();
}
void _setScore() async {
await SharedPreferences.getInstance().then((sharedPreferences) {
setState(() {
_genelScore = sharedPreferences.getInt("genelScore")!;
});
});
}

我正在设计一个简单的应用程序,让用户尝试回答问题并打分。但是";对Null值使用的Null检查运算符"我无法摆脱这个错误。上面的代码是我显示用户知道的问题数量的页面。

我试着写int_generalScore=0,并使_generalScore可以为null。这一次,应用程序工作了,但如果用户误解了第一个问题,我的屏幕上就会写高分:null。

Text(
"HIGH SCORE",
textAlign: TextAlign.center,
style: GoogleFonts.montserrat(
color: Color.fromARGB(255, 0, 0, 0),
),
),
const SizedBox(
height: 12,
),
Text("$_genelScore",
textAlign: TextAlign.center,
style: GoogleFonts.montserrat(
color: Colors.black)),

这是我将用户记录打印到屏幕上的代码。

void _updateBestScoreIfNecessary(int correctAnswers) async {
await SharedPreferences.getInstance().then((sharedPreferences) {
var bestScore = sharedPreferences.getInt("genelScore");
bestScore ??= 0;
if (bestScore < correctAnswers) {
sharedPreferences.setInt("genelScore", correctAnswers);
}
});
}

最后,这里是我的代码,在这里我将关键字值与单词"匹配;genelScore";带有sharedPreferences。

最初,第一次打开SharedPreferences中的genelScore键不会保存任何值。因此,sharedPreferences.getInt("genelScore")!;返回null。

Do,

_genelScore = sharedPreferences.getInt("genelScore") ?? 0;