Flutter Button 应该每天按一次
Flutter Button It should be pressed once in a day
有什么地方可以让我一天只按一次的按钮。
那天你不能再按那个按钮。
需要等到第二天再按
ElevatedButton(
onPressed: () {
print("Once in a day");
title = "Change Date";
},
child: Text(title),
),
您创建了一个将日期时间转换为日期的函数 toDate。然后用 if 条件包装 onPressed 的内容,检查最后保存的日期(可以使用 userPreferences 或 sqflite 保存)是否不等于 currentDate。如果是这种情况,则执行 onPressed 的内容。完成后,您需要使用 userPreferences 或 sqflite 保存当前日期,以便您可以在下次用户按下按钮时检查当天是否已按下该按钮。
这是一小段代码。
///takes a dateTime and returns the date belonging to it
DateTime toDate(DateTime time) {
return DateTime(time.year, time.month, time.day);
}
String title = "";
st() {
return ElevatedButton(
onPressed: () {
if (/*check if the date the button was pressed the last
time is not equal to the toDate(DateTime.now())*/) {
print("Once in a day");
title = "Change Date";
//save the toDate(DateTime.now()) using
//shared Preferences or sqflite
}
},
child: Text(title),
);
}
在您的 onPress 函数中添加以下代码,
ElevatedButton(
onPressed: () {
SharedPreferences prefs = await SharedPreferences.getInstance();
final currentTime = DateTime.now();
DateTime resetTime = DateTime.parse(prefs.getString("time"));
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;
}
}
有什么地方可以让我一天只按一次的按钮。 那天你不能再按那个按钮。 需要等到第二天再按
ElevatedButton(
onPressed: () {
print("Once in a day");
title = "Change Date";
},
child: Text(title),
),
您创建了一个将日期时间转换为日期的函数 toDate。然后用 if 条件包装 onPressed 的内容,检查最后保存的日期(可以使用 userPreferences 或 sqflite 保存)是否不等于 currentDate。如果是这种情况,则执行 onPressed 的内容。完成后,您需要使用 userPreferences 或 sqflite 保存当前日期,以便您可以在下次用户按下按钮时检查当天是否已按下该按钮。 这是一小段代码。
///takes a dateTime and returns the date belonging to it
DateTime toDate(DateTime time) {
return DateTime(time.year, time.month, time.day);
}
String title = "";
st() {
return ElevatedButton(
onPressed: () {
if (/*check if the date the button was pressed the last
time is not equal to the toDate(DateTime.now())*/) {
print("Once in a day");
title = "Change Date";
//save the toDate(DateTime.now()) using
//shared Preferences or sqflite
}
},
child: Text(title),
);
}
在您的 onPress 函数中添加以下代码,
ElevatedButton(
onPressed: () {
SharedPreferences prefs = await SharedPreferences.getInstance();
final currentTime = DateTime.now();
DateTime resetTime = DateTime.parse(prefs.getString("time"));
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;
}
}