Flutter 在键/值(共享首选项)上设置状态函数不';t不用于显示新值

Flutter 在键/值(共享首选项)上设置状态函数不';t不用于显示新值,flutter,dart,Flutter,Dart,我正在用Flutter构建一个pomodoro小应用程序。我使用包shared_preferences来存储字符串和Int 一切都正常(加载和保存),但我试图用SetState自动更改Int值的显示,但这不起作用。仅当我重新加载应用程序时,显示值才会更改 我的保存方法是: _savePomo() async { SharedPreferences prefs = await SharedPreferences.getInstance(); setState(() { prefs.setInt

我正在用Flutter构建一个pomodoro小应用程序。我使用包shared_preferences来存储字符串和Int

一切都正常(加载和保存),但我试图用SetState自动更改Int值的显示,但这不起作用。仅当我重新加载应用程序时,显示值才会更改

我的保存方法是:

_savePomo() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
setState(() {
  prefs.setInt('pomodoro', pomodoro);
});
}
每次podomoro完成一个循环时,都会调用该方法。在调用该方法之前,我增加pomotoro变量=+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');
}
您可以在文本小部件中使用pomodoro变量,如下所示:-

Text("It's your " + pomodoro.toString() +"th pomodoro !");

抱歉,我应该更清楚:我在set state方法中有一个增量为+1的变量'laps',然后我将laps变量添加到pomodoro key_值中,方法如下:_sauverPomo()async{SharedPreferences prefs=wait SharedPreferences.getInstance();setState({int-pomodoro=(prefs.getInt('pomodoro')??0);pomodoro=pomodoro+laps;prefs.setInt('pomodoro',pomodoro);}