mirror of
https://github.com/HChaZZY/PiliPlus.git
synced 2025-12-06 09:13:48 +08:00
opt: keep member search page
fix: search arc Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
@@ -151,9 +151,9 @@ class MemberSearchController extends GetxController
|
|||||||
isEndArchive = true;
|
isEndArchive = true;
|
||||||
}
|
}
|
||||||
archiveState.value = LoadingState.success(vlist);
|
archiveState.value = LoadingState.success(vlist);
|
||||||
} else if (dynamicState.value is Success) {
|
} else if (archiveState.value is Success) {
|
||||||
List<VListItemModel> currentList =
|
List<VListItemModel> currentList =
|
||||||
(dynamicState.value as Success).response;
|
(archiveState.value as Success).response;
|
||||||
currentList.addAll(vlist!);
|
currentList.addAll(vlist!);
|
||||||
if (currentList.length >= archiveCount.value) {
|
if (currentList.length >= archiveCount.value) {
|
||||||
isEndDynamic = true;
|
isEndDynamic = true;
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import 'package:easy_debounce/easy_throttle.dart';
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:get/get_state_manager/src/rx_flutter/rx_obx_widget.dart';
|
import 'package:get/get_state_manager/src/rx_flutter/rx_obx_widget.dart';
|
||||||
|
|
||||||
class SearchArchive extends StatelessWidget {
|
class SearchArchive extends StatefulWidget {
|
||||||
const SearchArchive({
|
const SearchArchive({
|
||||||
super.key,
|
super.key,
|
||||||
required this.ctr,
|
required this.ctr,
|
||||||
@@ -17,9 +17,16 @@ class SearchArchive extends StatelessWidget {
|
|||||||
|
|
||||||
final MemberSearchController ctr;
|
final MemberSearchController ctr;
|
||||||
|
|
||||||
|
@override
|
||||||
|
State<SearchArchive> createState() => _SearchArchiveState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _SearchArchiveState extends State<SearchArchive>
|
||||||
|
with AutomaticKeepAliveClientMixin {
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Obx(() => _buildBody(context, ctr.archiveState.value));
|
super.build(context);
|
||||||
|
return Obx(() => _buildBody(context, widget.ctr.archiveState.value));
|
||||||
}
|
}
|
||||||
|
|
||||||
Widget _buildBody(BuildContext context, LoadingState loadingState) {
|
Widget _buildBody(BuildContext context, LoadingState loadingState) {
|
||||||
@@ -28,7 +35,7 @@ class SearchArchive extends StatelessWidget {
|
|||||||
Success() => (loadingState.response as List?)?.isNotEmpty == true
|
Success() => (loadingState.response as List?)?.isNotEmpty == true
|
||||||
? refreshIndicator(
|
? refreshIndicator(
|
||||||
onRefresh: () async {
|
onRefresh: () async {
|
||||||
await ctr.refreshArchive();
|
await widget.ctr.refreshArchive();
|
||||||
},
|
},
|
||||||
child: CustomScrollView(
|
child: CustomScrollView(
|
||||||
physics: const AlwaysScrollableScrollPhysics(),
|
physics: const AlwaysScrollableScrollPhysics(),
|
||||||
@@ -49,7 +56,7 @@ class SearchArchive extends StatelessWidget {
|
|||||||
if (index == loadingState.response.length - 1) {
|
if (index == loadingState.response.length - 1) {
|
||||||
EasyThrottle.throttle('searchArchives',
|
EasyThrottle.throttle('searchArchives',
|
||||||
const Duration(milliseconds: 500), () {
|
const Duration(milliseconds: 500), () {
|
||||||
ctr.searchArchives(false);
|
widget.ctr.searchArchives(false);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
return VideoCardH(
|
return VideoCardH(
|
||||||
@@ -65,18 +72,21 @@ class SearchArchive extends StatelessWidget {
|
|||||||
)
|
)
|
||||||
: errorWidget(
|
: errorWidget(
|
||||||
callback: () {
|
callback: () {
|
||||||
ctr.archiveState.value = LoadingState.loading();
|
widget.ctr.archiveState.value = LoadingState.loading();
|
||||||
ctr.refreshArchive();
|
widget.ctr.refreshArchive();
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
Error() => errorWidget(
|
Error() => errorWidget(
|
||||||
errMsg: loadingState.errMsg,
|
errMsg: loadingState.errMsg,
|
||||||
callback: () {
|
callback: () {
|
||||||
ctr.archiveState.value = LoadingState.loading();
|
widget.ctr.archiveState.value = LoadingState.loading();
|
||||||
ctr.refreshArchive();
|
widget.ctr.refreshArchive();
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
LoadingState() => throw UnimplementedError(),
|
LoadingState() => throw UnimplementedError(),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
bool get wantKeepAlive => true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:waterfall_flow/waterfall_flow.dart';
|
import 'package:waterfall_flow/waterfall_flow.dart';
|
||||||
|
|
||||||
class SearchDynamic extends StatelessWidget {
|
class SearchDynamic extends StatefulWidget {
|
||||||
const SearchDynamic({
|
const SearchDynamic({
|
||||||
super.key,
|
super.key,
|
||||||
required this.ctr,
|
required this.ctr,
|
||||||
@@ -19,9 +19,16 @@ class SearchDynamic extends StatelessWidget {
|
|||||||
|
|
||||||
final MemberSearchController ctr;
|
final MemberSearchController ctr;
|
||||||
|
|
||||||
|
@override
|
||||||
|
State<SearchDynamic> createState() => _SearchDynamicState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _SearchDynamicState extends State<SearchDynamic>
|
||||||
|
with AutomaticKeepAliveClientMixin {
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Obx(() => _buildBody(context, ctr.dynamicState.value));
|
super.build(context);
|
||||||
|
return Obx(() => _buildBody(context, widget.ctr.dynamicState.value));
|
||||||
}
|
}
|
||||||
|
|
||||||
Widget _buildBody(BuildContext context, LoadingState loadingState) {
|
Widget _buildBody(BuildContext context, LoadingState loadingState) {
|
||||||
@@ -32,7 +39,7 @@ class SearchDynamic extends StatelessWidget {
|
|||||||
Success() => (loadingState.response as List?)?.isNotEmpty == true
|
Success() => (loadingState.response as List?)?.isNotEmpty == true
|
||||||
? refreshIndicator(
|
? refreshIndicator(
|
||||||
onRefresh: () async {
|
onRefresh: () async {
|
||||||
await ctr.refreshDynamic();
|
await widget.ctr.refreshDynamic();
|
||||||
},
|
},
|
||||||
child: CustomScrollView(
|
child: CustomScrollView(
|
||||||
physics: const AlwaysScrollableScrollPhysics(),
|
physics: const AlwaysScrollableScrollPhysics(),
|
||||||
@@ -50,7 +57,7 @@ class SearchDynamic extends StatelessWidget {
|
|||||||
if (index == loadingState.response.length - 1) {
|
if (index == loadingState.response.length - 1) {
|
||||||
EasyThrottle.throttle('member_dynamics',
|
EasyThrottle.throttle('member_dynamics',
|
||||||
const Duration(milliseconds: 1000), () {
|
const Duration(milliseconds: 1000), () {
|
||||||
ctr.searchDynamic(false);
|
widget.ctr.searchDynamic(false);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
return index == loadingState.response.length
|
return index == loadingState.response.length
|
||||||
@@ -74,7 +81,7 @@ class SearchDynamic extends StatelessWidget {
|
|||||||
EasyThrottle.throttle('member_dynamics',
|
EasyThrottle.throttle('member_dynamics',
|
||||||
const Duration(milliseconds: 1000),
|
const Duration(milliseconds: 1000),
|
||||||
() {
|
() {
|
||||||
ctr.searchDynamic(false);
|
widget.ctr.searchDynamic(false);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
return DynamicPanel(
|
return DynamicPanel(
|
||||||
@@ -94,18 +101,21 @@ class SearchDynamic extends StatelessWidget {
|
|||||||
)
|
)
|
||||||
: errorWidget(
|
: errorWidget(
|
||||||
callback: () {
|
callback: () {
|
||||||
ctr.dynamicState.value = LoadingState.loading();
|
widget.ctr.dynamicState.value = LoadingState.loading();
|
||||||
ctr.refreshDynamic();
|
widget.ctr.refreshDynamic();
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
Error() => errorWidget(
|
Error() => errorWidget(
|
||||||
errMsg: loadingState.errMsg,
|
errMsg: loadingState.errMsg,
|
||||||
callback: () {
|
callback: () {
|
||||||
ctr.dynamicState.value = LoadingState.loading();
|
widget.ctr.dynamicState.value = LoadingState.loading();
|
||||||
ctr.refreshDynamic();
|
widget.ctr.refreshDynamic();
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
LoadingState() => throw UnimplementedError(),
|
LoadingState() => throw UnimplementedError(),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
bool get wantKeepAlive => true;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user