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