feat: later page: multi select

feat: fav detail page: multi select

opt: reply item

opt: load more

Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
bggRGjQaUbCoE
2024-11-28 20:53:52 +08:00
parent 665dd8b92a
commit 12818ae415
51 changed files with 988 additions and 759 deletions

View File

@@ -8,7 +8,6 @@ class MemberDynamicsController extends CommonController {
MemberDynamicsController(this.mid);
int mid;
String offset = '';
bool hasMore = true;
@override
void onInit() async {
@@ -19,13 +18,12 @@ class MemberDynamicsController extends CommonController {
@override
Future onRefresh() {
offset = '';
hasMore = true;
return super.onRefresh();
}
@override
Future queryData([bool isRefresh = true]) {
if (isRefresh.not && (hasMore.not || offset == '-1')) {
if (isRefresh.not && (isEnd || offset == '-1')) {
return Future.value();
}
return super.queryData(isRefresh);
@@ -35,7 +33,7 @@ class MemberDynamicsController extends CommonController {
bool customHandleResponse(Success response) {
DynamicsDataModel data = response.response;
offset = data.offset?.isNotEmpty == true ? data.offset! : '-1';
hasMore = data.hasMore ?? false;
isEnd = !(data.hasMore ?? false);
if (currentPage != 1 && loadingState.value is Success) {
data.items?.insertAll(0, (loadingState.value as Success).response);
}

View File

@@ -1,6 +1,5 @@
import 'package:PiliPalaX/common/widgets/refresh_indicator.dart';
import 'package:PiliPalaX/http/loading_state.dart';
import 'package:easy_debounce/easy_throttle.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:PiliPalaX/pages/member_dynamics/index.dart';
@@ -99,10 +98,7 @@ class _MemberDynamicsPageState extends State<MemberDynamicsPage>
// LastChildLayoutType.foot,
lastChildLayoutTypeBuilder: (index) {
if (index == loadingState.response.length - 1) {
EasyThrottle.throttle('member_dynamics',
const Duration(milliseconds: 1000), () {
_memberDynamicController.onLoadMore();
});
_memberDynamicController.onLoadMore();
}
return index == loadingState.response.length
? LastChildLayoutType.foot
@@ -121,10 +117,7 @@ class _MemberDynamicsPageState extends State<MemberDynamicsPage>
delegate: SliverChildBuilderDelegate(
(context, index) {
if (index == loadingState.response.length - 1) {
EasyThrottle.throttle('member_dynamics',
const Duration(milliseconds: 1000), () {
_memberDynamicController.onLoadMore();
});
_memberDynamicController.onLoadMore();
}
return DynamicPanel(
item: loadingState.response[index]);