每天为每个用户显示一次消息
Display a Message Once a Day Per a User
我想每天在登录时向用户显示一次消息。我知道我们可以使用 .difference().inDays >= 1 来比较 2 DateTimes 如果为真则显示消息。我感到困惑的是我们应该比较哪两个日期时间。我目前使用 DateTime.now() 和一个 returns 上次登录时间的函数。这个问题是每次用户登录时都会更新上次登录时间。这是我的函数的样子:
Future<void> showDialog() async {
if (Client.loginResponse.loginMessage[0].message != '') {
if (DateTime.now()
.difference(await MobileLoginCache.getLastLogin(
Client.loginResponse.dataSource, Client.loginResponse.user.name, localStorage))
.inDays >=
1) {
await LoginMessageDialog(content: Client.loginResponse.loginMessage[0].message, context: context).show();
}
}
}
我应该使用什么来代替上次登录时间?
当您在 SharedPreferences 中显示对话框时,您可以只保留 DateTime 吗?
Future<void> showDialog() async {
if (Client.loginResponse.loginMessage[0].message != '') {
SharedPreferences prefs = await SharedPreferences.getInstance();
DateTime now = DateTime.now();
DateTime lastMessageTime = new DateTime(prefs.getLong("lastMessageTime", 0));
if (now.difference(lastMessageTime).inDays >= 1) {
await prefs.setLong("lastMessageTime", now.getTime());
await LoginMessageDialog(content: Client.loginResponse.loginMessage[0].message, context: context).show();
}
}
}
我想每天在登录时向用户显示一次消息。我知道我们可以使用 .difference().inDays >= 1 来比较 2 DateTimes 如果为真则显示消息。我感到困惑的是我们应该比较哪两个日期时间。我目前使用 DateTime.now() 和一个 returns 上次登录时间的函数。这个问题是每次用户登录时都会更新上次登录时间。这是我的函数的样子:
Future<void> showDialog() async {
if (Client.loginResponse.loginMessage[0].message != '') {
if (DateTime.now()
.difference(await MobileLoginCache.getLastLogin(
Client.loginResponse.dataSource, Client.loginResponse.user.name, localStorage))
.inDays >=
1) {
await LoginMessageDialog(content: Client.loginResponse.loginMessage[0].message, context: context).show();
}
}
}
我应该使用什么来代替上次登录时间?
当您在 SharedPreferences 中显示对话框时,您可以只保留 DateTime 吗?
Future<void> showDialog() async {
if (Client.loginResponse.loginMessage[0].message != '') {
SharedPreferences prefs = await SharedPreferences.getInstance();
DateTime now = DateTime.now();
DateTime lastMessageTime = new DateTime(prefs.getLong("lastMessageTime", 0));
if (now.difference(lastMessageTime).inDays >= 1) {
await prefs.setLong("lastMessageTime", now.getTime());
await LoginMessageDialog(content: Client.loginResponse.loginMessage[0].message, context: context).show();
}
}
}