Files
PiliPlus/lib/pages/common/common_controller.dart
dom b89b822d5e drop
Signed-off-by: dom <githubaccount56556@proton.me>
2026-05-02 10:36:41 +08:00

55 lines
1.1 KiB
Dart

import 'dart:async';
import 'package:PiliPlus/http/loading_state.dart';
import 'package:PiliPlus/utils/extension/scroll_controller_ext.dart';
import 'package:flutter/widgets.dart' show ScrollController;
import 'package:get/get.dart';
mixin ScrollOrRefreshMixin {
ScrollController get scrollController;
void animateToTop() => scrollController.animToTop();
Future<void> onRefresh();
}
abstract class CommonController<R, T> extends GetxController
with ScrollOrRefreshMixin {
@override
final ScrollController scrollController = ScrollController();
bool isLoading = false;
Rx<LoadingState> get loadingState;
Future<LoadingState<R>> customGetData();
Future<void> queryData([bool isRefresh = true]);
bool customHandleResponse(bool isRefresh, Success<R> response) {
return false;
}
bool handleError(String? errMsg) {
return false;
}
@override
Future<void> onRefresh() {
return queryData();
}
Future<void> onLoadMore() {
return queryData(false);
}
Future<void> onReload() {
return onRefresh();
}
@override
void onClose() {
scrollController.dispose();
super.onClose();
}
}