作者:wp_725133 | 来源:互联网 | 2023-08-07 11:59
我正在用Flutter构建一个小的pomodoro应用程序。我正在使用包shared_preferences存储一个String和一个Int。
一切正常(加载和保存),但是我试图使用SetState自动更改Int值的显示,这是行不通的。仅当我重新加载应用程序时,显示值才会更改。
我的保存方法是:
_savePomo() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
setState(() {
prefs.setInt('pomodoro',pomodoro);
});
}
每次podomoro完成一个循环时都会调用该方法。在调用该方法之前,我先增加番茄变量= + 1。
我正在显示这样的值:
Text("It's your " + _pomodoro.toString() +"th pomodoro !");
所有事情都在有状态的小部件中发生。
执行此操作的地方:
_pomodoro += 1;
将其转换为此:
setState(() {
_pomodoro += 1;
});
您也不需要将prefs.setInt
放在setState
中。
,
您可以尝试以下代码:-
int pomodoro = 0;
_savePomo() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
await prefs.setInt('pomodoro',pomodoro);
pomodoro = await prefs.getInt('pomodoro');
}
您可以在Text小部件中使用pomodoro变量,如下所示:-
Text("It's your " + pomodoro.toString() +"th pomodoro !");