filter method
Filters notifications based on the provided parameters.
Implementation
List<Notification> filter({
NotificationType? type,
bool? read,
DateTime? readBefore,
DateTime? readAfter,
DateTime? timestampBefore,
DateTime? timestampAfter,
}) {
if (!state.hasData) return [];
return state.requireData.where((element) {
if (type != null && element.type != type) return false;
if (read != null && element.read != read) return false;
if (readBefore != null && element.readAt == null) return false;
if (readBefore != null && element.readAt!.isAfter(readBefore)) return false;
if (readAfter != null && element.readAt == null) return false;
if (readAfter != null && element.readAt!.isBefore(readAfter)) return false;
if (timestampBefore != null && element.timestamp.isAfter(timestampBefore)) return false;
if (timestampAfter != null && element.timestamp.isBefore(timestampAfter)) return false;
return true;
}).toList();
}