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 onRefresh(); } abstract class CommonController extends GetxController with ScrollOrRefreshMixin { @override final ScrollController scrollController = ScrollController(); bool isLoading = false; Rx get loadingState; Future> customGetData(); Future queryData([bool isRefresh = true]); bool customHandleResponse(bool isRefresh, Success response) { return false; } bool handleError(String? errMsg) { return false; } @override Future onRefresh() { return queryData(); } Future onLoadMore() { return queryData(false); } Future onReload() { return onRefresh(); } @override void onClose() { scrollController.dispose(); super.onClose(); } }