work on paginations
This commit is contained in:
parent
c47fbac5fe
commit
2815fc8ddc
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -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),
|
||||
),
|
||||
)
|
||||
],
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue