work on paginations

This commit is contained in:
MohammadTaha Basiri 2022-03-11 01:12:57 +03:30
parent c47fbac5fe
commit 2815fc8ddc
5 changed files with 18 additions and 8 deletions

View File

@ -3,7 +3,7 @@ import 'package:didvan/models/requests/radar.dart';
import 'package:didvan/models/requests/studio.dart';
class RequestHelper {
static const String baseUrl = 'https://api.didvan.app';
static const String baseUrl = 'https://test.api.didvan.app';
static const String _baseUserUrl = baseUrl + '/user';
static const String _baseRadarUrl = baseUrl + '/radar';
static const String _baseNewsUrl = baseUrl + '/news';
@ -36,10 +36,11 @@ class RequestHelper {
baseUrl +
'/tag' +
_urlConcatGenerator([
MapEntry('page', page?.toString()),
MapEntry('limit', limit?.toString() ?? '3'),
MapEntry('type', type),
MapEntry('id', itemId?.toString() ?? '1'),
MapEntry('tags', _urlListConcatGenerator(ids))
MapEntry('tags', _urlListConcatGenerator(ids)),
]);
static String markRadar(int id) => _baseRadarUrl + '/$id/mark';

View File

@ -6,6 +6,7 @@ import 'package:didvan/views/home/widgets/radar_overview.dart';
import 'package:didvan/views/widgets/didvan/scaffold.dart';
import 'package:didvan/views/widgets/state_handlers/sliver_state_handler.dart';
import 'package:flutter/material.dart';
import 'package:flutter_spinkit/flutter_spinkit.dart';
import 'package:provider/provider.dart';
class Hashtag extends StatefulWidget {
@ -37,10 +38,16 @@ class _HashtagState extends State<Hashtag> {
placeholder: RadarOverview.placeholder,
builder: (context, state, index) {
index++;
if (index % 15 == 0 && index / 15 >= state.page) {
state.getTagItems(page: index ~/ 15 + 1);
if (index % 15 == 0 && state.lastPage != state.page) {
state.getTagItems(page: state.page + 1);
}
index--;
if (index == state.items.length) {
return SpinKitThreeBounce(
color: Theme.of(context).colorScheme.primary,
size: 24,
);
}
final item = state.items[index];
final type = item.type;
if (type == 'radar') {
@ -57,8 +64,9 @@ class _HashtagState extends State<Hashtag> {
}
return Container();
},
childCount: state.items.length,
onRetry: () => state.getTagItems(page: 1),
childCount:
state.items.length + (state.page != state.lastPage ? 1 : 0),
onRetry: () => state.getTagItems(page: state.page),
),
)
],

View File

@ -9,6 +9,7 @@ class HashtagState extends CoreProvier {
late final int id;
int page = 1;
int lastPage = 1;
Future<void> getTagItems({required int page}) async {
this.page = page;

View File

@ -57,7 +57,7 @@ class _NewsState extends State<News> {
builder: (context, state, index) {
index += 2;
if (index % 15 == 0 && state.lastPage != state.page) {
state.getNews(page: index ~/ 15 + 1);
state.getNews(page: state.page + 1);
}
index -= 2;
if (index >= state.news.length) {

View File

@ -130,7 +130,7 @@ class _RadarState extends State<Radar> {
builder: (context, state, index) {
index += 2;
if (index % 15 == 0 && state.lastPage != state.page) {
state.getRadars(page: index ~/ 15 + 1);
state.getRadars(page: state.page + 1);
}
index -= 2;
if (index >= state.radars.length) {