Flutter 每次页面加载到Flatter时显示新的共享首选项值?
我有一个手机游戏,它在游戏结束后保存最大分数值,并在主页上显示最大分数。因为我在主页Flutter 每次页面加载到Flatter时显示新的共享首选项值?,flutter,dart,sharedpreferences,Flutter,Dart,Sharedpreferences,我有一个手机游戏,它在游戏结束后保存最大分数值,并在主页上显示最大分数。因为我在主页initState()函数中加载共享首选项数据,除非用户关闭并重新打开应用程序,否则主页上的最大分数不会改变。有什么解决办法吗 这是play_game.dart文件,当用户完成游戏时,我在其中将结果保存到SharedReferences: Future saveResults() async { SharedPreferences preferences = await SharedPreferenc
initState()
函数中加载共享首选项数据,除非用户关闭并重新打开应用程序,否则主页上的最大分数不会改变。有什么解决办法吗
这是play_game.dart文件,当用户完成游戏时,我在其中将结果保存到SharedReferences:
Future saveResults() async {
SharedPreferences preferences = await SharedPreferences.getInstance();
int maxSoz = int.parse(preferences.getString('max_soz'));
int maxPoint = int.parse(preferences.getString('max_xal'));
if (speed > maxPoint && soz > maxSoz) {
preferences.setString('max_xal', speed.toString());
preferences.setString('max_soz', soz.toString());
}
}
这是登录页,我在这里显示最大分数。
我有一个加载SharedReferences数据的函数:
Future loadData() async {
SharedPreferences preferences = await SharedPreferences.getInstance();
setState(() {
this.maxSoz = preferences.getString('max_soz') ?? '0';
this.maxPoint = preferences.getString('max_xal') ?? '0';
});
}
为了加载数据,我在initState()中提到了该函数:
initState()
在第一次初始化页面时加载数据(执行loadData()
函数)。如果玩家在完成游戏后,通过单击“返回”按钮从play_game page返回到登录页,则新的最大分数不会显示在登录页上,因为正如您所猜测的,函数loadData()
仅在页面初始化时执行(通过initState()
).您可以在导航器
前面添加等待
,例如:
...
...
final exit = await Navigator.of(context).pushNamed("/pages/play_game");
if (exit == true) {
loadData();
}
...
...
注意:我假设您的玩游戏。dart
会返回一些东西,例如bool
如果你写了一些代码,那么我们就很容易知道你面临的问题是什么。看看集团模式如何在UI和模型之间传播状态同意@sagar…发布你的代码。“集团可能在用蒸汽压路机碾碎花生,”伊姆霍试图澄清我的问题。希望你们能理解alluse FutureBuilder,这样的问题每秒钟都会被讨论上百万次。我发现使用FutureBuilder将是唯一的解决方案,但若游戏中并没有太多页面,你们的方法也很有用。谢谢你的时间!
...
...
final exit = await Navigator.of(context).pushNamed("/pages/play_game");
if (exit == true) {
loadData();
}
...
...