| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- import 'package:easy_refresh/easy_refresh.dart';
- import 'package:flutter/cupertino.dart';
- import 'package:injectable/injectable.dart';
- import 'package:keyboard/base/base_controller.dart';
- import 'package:get/get.dart';
- import 'package:keyboard/data/repository/characters_repository.dart';
- import 'package:keyboard/dialog/character_details_dialog.dart';
- import 'package:keyboard/module/character/character_controller.dart';
- import 'package:keyboard/utils/atmob_log.dart';
- import 'package:keyboard/utils/toast_util.dart';
- import '../../../data/bean/character_group_info.dart';
- import '../../../data/bean/character_info.dart';
- import '../../../data/bean/keyboard_info.dart';
- @injectable
- class CharacterGroupContentController extends BaseController {
- final tag = "CharacterGroupContentController";
- Rx<KeyboardInfo> get currentKeyboardInfo =>
- Get.find<CharacterController>().currentKeyboardInfo;
- Rx<CharacterGroupInfo> get currentCharacterGroupInfo =>
- Get.find<CharacterController>().currentCharacterGroupInfo;
- final CharactersRepository charactersRepository;
- CharacterGroupContentController(this.charactersRepository);
- RxList<CharacterInfo> characterList = <CharacterInfo>[].obs;
- RxInt currentListCount = 0.obs;
- RxInt currentPage = 1.obs;
- late EasyRefreshController refreshController;
- @override
- void onInit() async {
- super.onInit();
- refreshController = EasyRefreshController(
- controlFinishLoad: true,
- controlFinishRefresh: true,
- );
- // 等待页面渲染完成后再加载数据
- WidgetsBinding.instance.addPostFrameCallback((_) {
- refreshData();
- });
- everAll([currentCharacterGroupInfo, currentKeyboardInfo], (_) async {
- await refreshData();
- });
- }
- @override
- onReady() {
- super.onReady();
- }
- // 下拉刷新
- Future<void> refreshData() async {
- AtmobLog.d(
- tag,
- 'refreshData ${currentCharacterGroupInfo.value.id}, ${currentKeyboardInfo.value.id}',
- );
- currentPage.value = 1;
- await getCurrentCharacterListInfo(isRefresh: true);
- refreshController.finishRefresh();
- refreshController.resetFooter(); // 允许加载更多
- }
- // 上拉加载更多
- Future<void> loadMoreData() async {
- if (characterList.length >= currentListCount.value) {
- refreshController.finishLoad(IndicatorResult.noMore);
- return;
- }
- currentPage.value++;
- await getCurrentCharacterListInfo(isRefresh: false);
- refreshController.finishLoad(IndicatorResult.success);
- }
- // 获取角色列表
- Future<void> getCurrentCharacterListInfo({bool isRefresh = false}) async {
- var response = await charactersRepository.getCharactersPage(
- groupId: currentCharacterGroupInfo.value.id.toString(),
- page: currentPage.value,
- keyboardId: currentKeyboardInfo.value.id.toString(),
- );
- if (isRefresh) {
- characterList.value = response.characterInfos;
- } else {
- characterList.addAll(response.characterInfos);
- }
- currentListCount.value = response.count;
- }
- @override
- void onClose() {
- refreshController.dispose();
- super.onClose();
- }
- void itemButtonClick(CharacterInfo characterInfo) {
- AtmobLog.d(tag, 'characterInfo ${characterInfo.toJson()} ');
- CharacterDetailsDialog.show(
- characterInfo: characterInfo,
- clickCallback: () {
- if (characterInfo.isLock == true) {
- // addCharacter(characterInfo);
- } else if (characterInfo.isAdd == false) {
- // unlockCharacter(characterInfo);
- } else {
- ToastUtil.show('该人设已添加');
- }
- },
- );
- }
- void addCharacter(CharacterInfo characterInfo) {
- charactersRepository.characterAdd(
- characterId: characterInfo.id.toString(),
- keyboardId: currentKeyboardInfo.value.id.toString(),
- );
- }
- void unlockCharacter(CharacterInfo characterInfo) {
- charactersRepository.characterUnlock(
- characterId: characterInfo.id.toString(),
- keyboardId: currentKeyboardInfo.value.id.toString(),
- );
- }
- }
|