WGShare.Mobile.Flutter/wgshare/lib/pages/homePage/home_logic.dart

76 lines
2.2 KiB
Dart
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:signalr_core/signalr_core.dart';
import 'package:wgshare/common/models/common/base_structure_result.dart';
import 'package:wgshare/common/mixins/request_tool_mixin.dart';
import '../../common/models/meeting_room_item.dart';
import '../../utils/toast_utils.dart';
import 'home_state.dart';
class HomeLogic extends GetxController with RequestToolMixin {
final HomeState state = HomeState();
@override
void onInit() {
super.onInit();
doHttpGetMeetingRoomList(state.pageIndex.value,state.pageSize.value);
}
@override
void onClose() {
super.onClose();
state.refreshController.dispose();
}
/// 直接进入会议(匿名登录)
Future<void> doHttpGetMeetingRoomList(int pageIndex, int pageSize) async {
BaseStructureResult<MeetingRoomItem> res = await getClient().getMeetingRoomList(pageIndex,pageSize);
if(null != res.data){
if(state.pageIndex == 1){
state.meetingRooms.value = res.data!.items;
state.totalPage.value = res.data!.totalPage;
state.total.value = res.data!.total;
state.refreshController.refreshCompleted(resetFooterState: true);
}else{
if(state.pageIndex.value < state.totalPage.value){
state.meetingRooms.value.addAll(res.data!.items);
state.refreshController.loadComplete();
}else{
state.refreshController.loadNoData();
}
}
}
}
/// 下拉刷新
void onRefresh(){
state.pageIndex.value = 1;
doHttpGetMeetingRoomList(state.pageIndex.value,state.pageSize.value);
}
/// 上滑加载更多
void onLoading(){
state.pageIndex.value += 1;
doHttpGetMeetingRoomList(state.pageIndex.value,state.pageSize.value);
}
/// 返回键退出
bool closeOnConfirm(BuildContext context) {
DateTime now = DateTime.now();
// 物理键两次间隔大于4秒, 退出请求无效
if (state.currentBackPressTime == null ||
now.difference(state.currentBackPressTime!) > const Duration(seconds: 4)) {
state.currentBackPressTime = now;
ToastUtils.showInfo("再按一次退出");
return false;
}
// 退出请求有效
state.currentBackPressTime = null;
return true;
}
}