如何解决如何让 Flutter Widget 在特定时间以天为单位后消失?
我在主屏幕上有几个小部件,其中一个只有在用户保存一些数据时才会出现,从那一刻起 我想计算 7 天,如果没有其他事情发生,小部件将被删除。 我试过这样的事情:
//当用户保存数据到widget
_saveTime() async {
SharedPreferences pref = await SharedPreferences.getInstance();
pref.setString(
'StoreTime',DateTime.Now().add(Duration(days: 8)).toString());
}
然后在首页
...
bool _thirdMenu;
String _difDays = '';
@override
initState() {
super.initState();
_thirdMenu = true;
WidgetsBinding.instance.addobserver(this);
_init();
}
_init() async {
SharedPreferences pref = await SharedPreferences.getInstance();
String oldTimePref = pref.getString('StoreTime') ?? '1969-07-20 20:18:04Z';
DateTime oldTime = DateTime.parse(oldTimePref);
DateTime newTime = DateTime.Now();
var difference = oldTime.difference(newTime);
if (difference.inDays > 0) {
setState(() {
_thirdMenu = true;
_difDays = difference.inDays.toString();
});
} else {
setState(() {
_thirdMenu = false;
});
}
}
不工作,时间保持不变,小部件仍然显示......
解决方法
如果你想用几天的时间工作,我认为你可以不用几小时和几分钟来工作。 您可以隔离日期并进行检查,而无需使用时差。
int oldDay = oldTime.day;
int today = newTime.day;
if(today - oldDay >= 7) {
setState(() {
_thirdMenu = false;
});
} else {
setState(() {
_thirdMenu = true;
});
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。