143 lines
4.9 KiB
Dart
143 lines
4.9 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:flutter_easyrefresh/easy_refresh.dart';
|
|
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
|
import 'package:get/get.dart';
|
|
import 'package:school_asignment_app/common/job/enum_subject.dart';
|
|
import 'package:school_asignment_app/common/job/work_student.dart';
|
|
import 'package:school_asignment_app/common/job/work_student_params.dart';
|
|
import 'package:school_asignment_app/common/mixins/request_tool_mixin.dart';
|
|
import 'package:school_asignment_app/common/store/user_store.dart';
|
|
import 'package:school_asignment_app/common/utils/toast_utils.dart';
|
|
import 'package:school_asignment_app/page/global_widget/my_text.dart';
|
|
|
|
import 'home_state.dart';
|
|
|
|
class HomeLogic extends GetxController with RequestToolMixin,GetTickerProviderStateMixin{
|
|
final HomeState state = HomeState();
|
|
late TabController tabController;
|
|
/* 待阅卷 */
|
|
late final EasyRefreshController refreshController1;
|
|
late final EasyRefreshController refreshController2;
|
|
|
|
@override
|
|
void onInit(){
|
|
super.onInit();
|
|
state.userInfo = UserStore.to.userInfo;
|
|
state.active = Get.arguments ?? 1;
|
|
refreshController1 = EasyRefreshController();
|
|
refreshController2 = EasyRefreshController();
|
|
tabController = TabController(
|
|
length: 2,
|
|
vsync: this,
|
|
);
|
|
getList();
|
|
}
|
|
void getList() async{
|
|
WorkStudentParams params = WorkStudentParams(assessType: state.tabIndex.value,);
|
|
WorkStudent data = await getClient().getWorkList(params);
|
|
state.workList.value = data.items;
|
|
refreshController1.finishRefresh();
|
|
refreshController2.finishRefresh();
|
|
print('state.workList.length=');
|
|
print(state.workList.length);
|
|
}
|
|
/// 刷新方法
|
|
Future<void> onMyRefresh(EasyRefreshController controller, int tab) async {
|
|
/* params.page = RequestConfig.basePage.page;
|
|
List<JobTaskItem> lists = await getData(controller, params, isReFresh: true);
|
|
try {
|
|
tab == 1 ? (markingDatas1 = lists) : (markingDatas2 = lists);
|
|
} catch (e) {}
|
|
toUpState(setState, () {}, mounted);*/
|
|
getList();
|
|
|
|
}
|
|
|
|
/// 加载方法
|
|
Future<void> onMyLoad(EasyRefreshController controller, int tab) async {
|
|
/*params.page++;
|
|
List<JobTaskItem> lists = await getData(controller, params);
|
|
if (lists.isNotEmpty) {
|
|
tab == 1 ? markingDatas1.addAll(lists) : markingDatas2.addAll(lists);
|
|
toUpState(setState, () {}, mounted);
|
|
}*/
|
|
}
|
|
String formatSubject(int id){
|
|
if(UserStore.to.subjectList.isEmpty){
|
|
return '';
|
|
}
|
|
EnumSubject item = UserStore.to.subjectList.firstWhere((element) => element.id == id);
|
|
return item.name??'';
|
|
}
|
|
|
|
/* Future<void> showStudents(
|
|
BuildContext context, [
|
|
bool? submitted = false,
|
|
String? className,
|
|
]) async {
|
|
ToastUtils.showLoading();
|
|
List<JobConcernedWithStudent> students = [];
|
|
|
|
showModalBottomSheet(
|
|
context: context,
|
|
elevation: 10,
|
|
backgroundColor: Colors.white,
|
|
shape: RoundedRectangleBorder(
|
|
borderRadius: BorderRadius.only(
|
|
topLeft: Radius.circular(20.r),
|
|
topRight: Radius.circular(20.r),
|
|
),
|
|
),
|
|
builder: (BuildContext context) {
|
|
return Padding(
|
|
padding: EdgeInsets.symmetric(horizontal: 2.w),
|
|
child: Column(
|
|
children: [
|
|
Container(
|
|
margin: EdgeInsets.only(top: 14.h),
|
|
child: quickText(
|
|
'${className ?? ''}${submitted! ? '已提交' : '未提交'}作业学生',
|
|
size: 18.sp,
|
|
fontWeight: FontWeight.bold,
|
|
color: Color.fromRGBO(60, 60, 60, 1),
|
|
),
|
|
),
|
|
Expanded(
|
|
child: ListView(
|
|
padding: EdgeInsets.symmetric(vertical: 8.h, horizontal: 4.w),
|
|
children: [
|
|
Wrap(
|
|
spacing: 6.0, // 主轴(水平)方向间距
|
|
runSpacing: 4.0, // 纵轴(垂直)方向间距
|
|
alignment: WrapAlignment.spaceAround, //沿主轴方向居中
|
|
children: students.map((e) {
|
|
return Chip(
|
|
backgroundColor: Color.fromRGBO(239, 242, 255, 1),
|
|
avatar: CircleAvatar(
|
|
backgroundColor: Colors.white,
|
|
child: quickText(e.studentName.substring(0, 1),
|
|
size: 12.sp, color: Theme.of(context).primaryColor),
|
|
),
|
|
label: quickText(e.studentName, color: Color.fromRGBO(80, 94, 110, 1), size: 12.sp),
|
|
);
|
|
}).toList(),
|
|
),
|
|
],
|
|
),
|
|
)
|
|
],
|
|
),
|
|
);
|
|
},
|
|
);
|
|
}*/
|
|
|
|
@override
|
|
void dispose(){
|
|
super.dispose();
|
|
tabController.dispose();
|
|
refreshController1.dispose();
|
|
refreshController2.dispose();
|
|
}
|
|
}
|