基于上周、上个月和去年的 Flutter 过滤器列表

Gov*_*iyo 3 dart flutter

我有地图列表,其中有日期字段。在屏幕中,我有过滤选项,我可以根据上周、上个月和去年过滤数据,所以不知道如何实现结果。

下面是我的代码

 _listOfHistory.addAll(
         _listStaticRoundForHistory.
         where((element) {
           final date = element.date;
           return date == date.subtract(Duration(days: 30));
         }
     ).toList());
Run Code Online (Sandbox Code Playgroud)

但很确定那是错的。

响应列表

[
 {
   "title": "title",
   "details": "details",
   "date": DateTime
 },
 {
   "title": "title",
   "details": "details",
   "date": DateTime
 }
 .
 .
 .
 .
]
Run Code Online (Sandbox Code Playgroud)

Car*_*sSR 7

我可以在其中根据上周、上个月和去年过滤数据

首先,您需要知道今天是哪一天,以便减去天、月或年。

var now = new DateTime.now();
var now_1w = now.subtract(Duration(days: 7)); 
var now_1m = new DateTime(now.year, now.month-1, now.day);
var now_1y = new DateTime(now.year-1, now.month, now.day);
Run Code Online (Sandbox Code Playgroud)

编辑 然后在您的代码中您只需要评估现在是否在您上面创建的任何日期之后,例如 1 周:

where((element) {
           final date = element.date;
           return now_1w.isBefore(date);
         }
Run Code Online (Sandbox Code Playgroud)

  • 我认为应该是“isBefore”而不是“sAfter” (2认同)