【问题标题】:Display a Message Once a Day Per a User每个用户每天显示一次消息
【发布时间】:2021-06-06 14:16:57
【问题描述】:

我想在登录时每天向用户显示一次消息。我知道我们可以使用 .difference().inDays >= 1 来比较 2 DateTimes 如果为真则显示消息。我感到困惑的是我们应该比较哪两个日期时间。我目前使用 DateTime.now() 和一个返回上次登录时间的函数。这个问题是每次用户登录时都会更新上次登录时间。这是我的函数的样子:

    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();
      }
    }
  }

我应该使用什么来代替上次登录时间?

【问题讨论】:

    标签: flutter datetime local-storage flutter-alertdialog


    【解决方案1】:

    当您在 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();
        }
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-23
      • 1970-01-01
      • 2018-08-12
      • 1970-01-01
      相关资源
      最近更新 更多