如何在Flutter中一天只显示一次警报对话框



我正在开发一个应用程序,我想在该应用程序中添加一个功能,当用户打开该应用程序时,该功能每天只显示一次警报对话框。我已经完成了使用boolean variable的对话框。如果此布尔值为true,则显示对话框,否则不显示对话框

您不需要使用布尔值,而是需要显示对话框的最后日期/时间。

每次出现需要显示对话框的情况时,您都会立即获取当前日期/时间,并将其与上次显示对话框的日期/时间进行比较。

因为你不能确定应用程序是会被杀死还是现在被杀死,你还需要将应用程序最后显示的日期/时间存储在磁盘上。

您可以使用共享首选项存储用户的最后访问时间,并检查用户今天是否在使用该应用程序。

SharedPreferences prefs = await SharedPreferences.getInstance();
prefs.setInt('lastAccess', DateTime.now().millisecondsSinceEpoch)
// Get last access
final int lastAccess = prefs.getInt('lastAccess');
if(lastAccess!=null){
// Get last access as DateTime
final DateTime lastAccessTime = DateTime.fromMillisecondsSinceEpoch(lastAccess);
// Check if he opened the app
final opened = lastAccessTime.isAfter(DateTime.now());
if(!opened){
// Show Dialog
}
}

我刚刚编写了最简单的算法。


SharedPreferences prefs = await SharedPreferences.getInstance();
int? lastDay = prefs.getInt('lastDay');
int today = DateTime.now().day;
if (lastDay == null || lastDay != today) {
//Show the dialog
prefs.setInt('lastDay', today);
}
timer = Timer.periodic(
Duration(days: 1,), 
(Timer t) => {
//callback
});

最新更新