如何在用户点击 flutter 中的按钮后禁用该按钮一天

问题描述 投票:0回答:1

拜托,我是颤振新手。我希望用户能够在一天的任何给定时间取款一次,但我希望在第一次点击或第一次取款后禁用取款按钮,然后到明天该按钮将处于活动状态。请问我该如何尝试这个,我尝试过使用共享首选项但无济于事。

我尝试了下面的代码,但收到错误“FormatException:无效的日期格式”,我也尝试更改日期格式但无济于事。请提供任何帮助,我们将不胜感激。



ElevatedButton(
  onPressed: () async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
   // var currentTime =  DateTime.now();
   //  var _formatter = DateFormat('yyyy/MM/dd HH:mm').format(currentTime);
   // var resetTime =  DateTime.parse(prefs.getString("time").toString()); 
   // final resetTime = DateTime.parse(prefs.getString("time") ?? '');

    var currentTime =  DateTime.now();
    var resetTime =  DateTime.parse(prefs.getString("time").toString());
    if(resetTime != null && !compareDate(currentTime, resetTime))
                                    prefs.setBool("one_tap", true);
                                  
      if(prefs.getBool("one_tap") == null || prefs.getBool("one_tap")!){
          print("Once in a day");
          title = "Change Date";
          prefs.setBool("one_tap", false);
          prefs.setString("time", currentTime.toString());
         }
},
child: Text(title),),

compareDate(DateTime current, DateTime reset) {
    if (reset != null) {
      return current.year == reset.year &&
          current.month == reset.month &&
          current.day == reset.day;
    } else {
      return true;
    }
  }
flutter dart datetime button sharedpreferences
1个回答
0
投票

有两种选择可以做到这一点:

  1. 当提款完成时,您必须将该日期时间保存为您的后端数据库,当用户返回到同一个提款按钮页面时,请点击 api 检查上次提款日期时间,然后您可以与当前日期时间进行匹配如果超过一天,则启用该按钮,反之亦然。
  2. 提款成功时在后端保存一个 bool 变量,在第一个选项中,我们正在计算前端的剩余时间,所以现在在后端执行此操作,将运行相同的逻辑,您可以使用该 bool 变量启用/禁用按钮
© www.soinside.com 2019 - 2024. All rights reserved.