mirror of
https://github.com/HChaZZY/PiliPlus.git
synced 2025-12-15 22:56:15 +08:00
feat: live search
Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
55
lib/pages/live_search/child/controller.dart
Normal file
55
lib/pages/live_search/child/controller.dart
Normal file
@@ -0,0 +1,55 @@
|
||||
import 'package:PiliPlus/http/live.dart';
|
||||
import 'package:PiliPlus/http/loading_state.dart';
|
||||
import 'package:PiliPlus/models/common/live_search_type.dart';
|
||||
import 'package:PiliPlus/models/live/live_search/data.dart';
|
||||
import 'package:PiliPlus/pages/common/common_list_controller.dart';
|
||||
import 'package:PiliPlus/pages/live_search/controller.dart';
|
||||
import 'package:PiliPlus/utils/storage.dart';
|
||||
|
||||
class LiveSearchChildController
|
||||
extends CommonListController<LiveSearchData, dynamic> {
|
||||
LiveSearchChildController(this.controller, this.searchType);
|
||||
|
||||
final isLogin = Accounts.main.isLogin;
|
||||
final LiveSearchController controller;
|
||||
final LiveSearchType searchType;
|
||||
|
||||
@override
|
||||
void checkIsEnd(int length) {
|
||||
switch (searchType) {
|
||||
case LiveSearchType.room:
|
||||
if (controller.counts.first != -1 &&
|
||||
length >= controller.counts.first) {
|
||||
isEnd = true;
|
||||
}
|
||||
break;
|
||||
case LiveSearchType.user:
|
||||
if (controller.counts[1] != -1 && length >= controller.counts[1]) {
|
||||
isEnd = true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
List? getDataList(response) {
|
||||
switch (searchType) {
|
||||
case LiveSearchType.room:
|
||||
controller.counts[searchType.index] = response.room?.totalRoom ?? 0;
|
||||
return response.room?.list;
|
||||
case LiveSearchType.user:
|
||||
controller.counts[searchType.index] = response.user?.totalUser ?? 0;
|
||||
return response.user?.list;
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
Future<LoadingState<LiveSearchData>> customGetData() {
|
||||
return LiveHttp.liveSearch(
|
||||
isLogin: isLogin,
|
||||
page: currentPage,
|
||||
keyword: controller.editingController.text,
|
||||
type: searchType,
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user