add pagination with limit

This commit is contained in:
Valentin CZERYBA 2025-05-30 23:39:50 +02:00
parent ec7a286074
commit 600bf8d2f4

View File

@ -51,7 +51,6 @@ class _MyHomePageState extends State<ListItemMenu> {
late ScrollController _scrollController;
int _fetchCount = 0;
bool _isLoading = false;
bool _lastData = false;
Future<List<Events>> postsFuture = getPosts();
List<Events> filteredPosts = [];
@ -149,12 +148,10 @@ class _MyHomePageState extends State<ListItemMenu> {
}
void _incrementFetchCount() {
if (!_lastData) {
setState(() {
_fetchCount++;
});
_fetchData();
}
setState(() {
_fetchCount++;
});
_fetchData();
}
void _scrollListener() {
@ -392,9 +389,10 @@ class _MyHomePageState extends State<ListItemMenu> {
} else {
queryParameters = dateParameter;
}
int limit = 20 * (_fetchCount + 1);
return Uri.parse(
"${globals.api}/$endpoint?$queryParameters&skip=${_fetchCount}");
"${globals.api}/$endpoint?$queryParameters&limit=${limit}");
}
Future<void> searchSuggestionsByItem(String input) async {
@ -405,7 +403,7 @@ class _MyHomePageState extends State<ListItemMenu> {
var url = await getUrlForEvents();
final response = await http.get(url, headers: {
"Content-Type": "application/json",
HttpHeaders.cookieHeader: "access_token=$accessToken"
HttpHeaders.cookieHeader: "acce0ss_token=$accessToken"
});
if (response.statusCode == 200) {
@ -472,14 +470,14 @@ class _MyHomePageState extends State<ListItemMenu> {
print("fetch count : ${_fetchCount}");
// Update state after getting the response
if (body.isEmpty) {
_lastData = true;
_fetchCount--;
}
setState(() {
if (body.isNotEmpty) {
// If we have results, map them to Events
filteredPosts.addAll(body
filteredPosts = body
.map((e) => Events.fromJson(e as Map<String, dynamic>))
.toList());
.toList();
}
});
} else {
@ -619,7 +617,6 @@ class _MyHomePageState extends State<ListItemMenu> {
labelText: 'Search by item',
onChanged: (value) {
_fetchCount = 0;
_lastData = false;
if (value.isNotEmpty) {
setState(() {
itemName = value;
@ -638,7 +635,6 @@ class _MyHomePageState extends State<ListItemMenu> {
},
onClear: () {
_fetchCount = 0;
_lastData = false;
setState(() {
inputItem.clear();
itemName = '';
@ -651,7 +647,6 @@ class _MyHomePageState extends State<ListItemMenu> {
suggestions: suggestionsItem,
onSuggestionTap: (suggestion) async {
_fetchCount = 0;
_lastData = false;
setState(() {
itemName = suggestion['name'];
inputItem.text = itemName;
@ -668,7 +663,6 @@ class _MyHomePageState extends State<ListItemMenu> {
labelText: 'Search by tags',
onChanged: (value) {
_fetchCount = 0;
_lastData = false;
if (value.isNotEmpty) {
setState(() {
itemTags = value;
@ -687,7 +681,6 @@ class _MyHomePageState extends State<ListItemMenu> {
},
onClear: () {
_fetchCount = 0;
_lastData = false;
setState(() {
inputTags.clear();
});
@ -696,7 +689,6 @@ class _MyHomePageState extends State<ListItemMenu> {
suggestions: suggestionsTags,
onSuggestionTap: (suggestion) async {
_fetchCount = 0;
_lastData = false;
setState(() {
itemTags = suggestion['name'];
@ -722,7 +714,6 @@ class _MyHomePageState extends State<ListItemMenu> {
labelText: 'Search by geographical zone',
onChanged: (value) async {
_fetchCount = 0;
_lastData = false;
if (value.isNotEmpty) {
setState(() {
@ -746,7 +737,6 @@ class _MyHomePageState extends State<ListItemMenu> {
},
onClear: () async {
_fetchCount = 0;
_lastData = false;
final prefs = await SharedPreferences.getInstance();
prefs.remove("city_lat");
prefs.remove("city_long");
@ -763,8 +753,6 @@ class _MyHomePageState extends State<ListItemMenu> {
suggestions: suggestionsGeo,
onSuggestionTap: (suggestion) async {
_fetchCount = 0;
_lastData = false;
final latitude = suggestion['geometry']['coordinates'][1];
final longitude = suggestion['geometry']['coordinates'][0];
setState(() {