diff --git a/making_school_asignment_app/lib/common/api/retrofit_client.dart b/making_school_asignment_app/lib/common/api/retrofit_client.dart index 5952a08..75a77cc 100644 --- a/making_school_asignment_app/lib/common/api/retrofit_client.dart +++ b/making_school_asignment_app/lib/common/api/retrofit_client.dart @@ -1,5 +1,3 @@ -import 'dart:io'; - import 'package:dio/dio.dart' hide Headers; import 'package:making_school_asignment_app/common/job/marking_models/do_paper_details_param.dart'; import 'package:making_school_asignment_app/common/job/marking_models/do_paper_details_result.dart'; diff --git a/making_school_asignment_app/lib/common/mixins/request_tool_mixin.dart b/making_school_asignment_app/lib/common/mixins/request_tool_mixin.dart index 7bb13e9..b1a27a9 100644 --- a/making_school_asignment_app/lib/common/mixins/request_tool_mixin.dart +++ b/making_school_asignment_app/lib/common/mixins/request_tool_mixin.dart @@ -1,6 +1,10 @@ +import 'package:dio/dio.dart'; import 'package:making_school_asignment_app/common/request/rest_dio.dart'; import 'package:making_school_asignment_app/common/api/retrofit_client.dart'; mixin RequestToolMixin { + // 获取DIO + Dio getClientDio() => RequestTool.instance.getDio(); + // 获取Client RetrofitClient getClient() => RequestTool.instance.getClient(); } diff --git a/making_school_asignment_app/lib/common/request/rest_dio.dart b/making_school_asignment_app/lib/common/request/rest_dio.dart index 629b7cc..40630b5 100644 --- a/making_school_asignment_app/lib/common/request/rest_dio.dart +++ b/making_school_asignment_app/lib/common/request/rest_dio.dart @@ -11,6 +11,7 @@ import 'package:making_school_asignment_app/common/utils/toast_utils.dart'; import 'package:making_school_asignment_app/routes/app_pages.dart'; class RequestTool { + static late Dio _dio; // 初始化请求配置 static _init() { BaseOptions options = BaseOptions( @@ -18,16 +19,16 @@ class RequestTool { connectTimeout: const Duration(milliseconds: RequestConfig.connectTimeout), receiveTimeout: const Duration(milliseconds: RequestConfig.receiveTimeout), ); - Dio dio = Dio(options); - dio.interceptors.add(AuthInterceptor()); // 添加 token - dio.interceptors.add(ResponseHandle()); // 添加 数据返回拦截 - dio.interceptors.add(TheError()); // 添加 数据返回拦截 + _dio = Dio(options); + _dio.interceptors.add(AuthInterceptor()); // 添加 token + _dio.interceptors.add(ResponseHandle()); // 添加 数据返回拦截 + _dio.interceptors.add(TheError()); // 添加 数据返回拦截 const isProd = bool.fromEnvironment('dart.vm.product'); if (!isProd && RequestConfig.requestDataPrinting) { - dio.interceptors.add(LogInterceptor(responseBody: true, requestBody: true)); //添加日志 + _dio.interceptors.add(LogInterceptor(responseBody: true, requestBody: true)); //添加日志 } - return RetrofitClient(dio, baseUrl: RequestConfig().baseUrl); + return RetrofitClient(_dio, baseUrl: RequestConfig().baseUrl); } final RetrofitClient _client; @@ -43,6 +44,9 @@ class RequestTool { return _instance!; } + // DIO + Dio getDio() => _dio; + RetrofitClient getClient() => _client; } diff --git a/making_school_asignment_app/lib/page/home_page/children/homework_review/components/original_manuscript_handwriting/answer_handwriting_view.dart b/making_school_asignment_app/lib/page/home_page/children/homework_review/components/original_manuscript_handwriting/answer_handwriting_view.dart index f606d3e..5d90ace 100644 --- a/making_school_asignment_app/lib/page/home_page/children/homework_review/components/original_manuscript_handwriting/answer_handwriting_view.dart +++ b/making_school_asignment_app/lib/page/home_page/children/homework_review/components/original_manuscript_handwriting/answer_handwriting_view.dart @@ -7,6 +7,7 @@ import 'package:flutter_spinkit/flutter_spinkit.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:functional_widget_annotation/functional_widget_annotation.dart'; import 'package:get/get.dart'; +import 'package:get/get_connect/http/src/request/request.dart'; import 'package:making_school_asignment_app/common/job/marking_models/do_test_questions_image_info.dart'; import 'package:making_school_asignment_app/common/job/marking_models/original_manuscript_handwriting_params.dart'; import 'package:making_school_asignment_app/common/mixins/event_bus_mixin.dart'; @@ -45,13 +46,18 @@ class AnswerHandwriting extends Dialog { final _handwritingLogic = Get.find(); @override Widget build(BuildContext context) { + var boxHeight = ScreenUtil().screenHeight / 1.168; // 盒子高度 + var boxWidth = ScreenUtil().screenWidth - (ScreenUtil().scaleWidth < 1.5 ? 40.r : 40.r); // 盒子宽度 + return Center( child: Container( - height: ScreenUtil().screenHeight / 1.2, - width: ScreenUtil().screenWidth - (ScreenUtil().scaleWidth < 1.5 ? 40.r : 40.r), + height: boxHeight, + width: boxWidth, alignment: Alignment.center, child: AnswerHandwritingMainBox( handwritingLogic: _handwritingLogic, + boxHeight: boxHeight, + boxWidth: boxWidth, homeworkId: homeworkId, templateId: templateId, studentId: studentId, @@ -101,6 +107,8 @@ class AnswerHandwritingMainBox extends HookWidget with EventBusMixin { required this.homeworkId, required this.studentId, required this.closeCall, + required this.boxHeight, + required this.boxWidth, this.templateId, this.pageNum, this.questionNo, @@ -110,6 +118,8 @@ class AnswerHandwritingMainBox extends HookWidget with EventBusMixin { final HandwritingLogic handwritingLogic; final String homeworkId; + final double boxHeight; + final double boxWidth; final int? templateId; final int studentId; final int? pageNum; @@ -119,7 +129,8 @@ class AnswerHandwritingMainBox extends HookWidget with EventBusMixin { @override Widget build(BuildContext context) { var _useStateModel = UseMainBoxState.use(homeworkId, studentId, pageNum, questionNo, templateId); - + double barHeight = 62.h; + double imageHeight = boxHeight - barHeight; useValueChanged(_useStateModel.handwritingData.value, (_, __) { var theData = _useStateModel.handwritingData.value; _useStateModel.pageNum.value = theData?.pageNum; @@ -148,25 +159,27 @@ class AnswerHandwritingMainBox extends HookWidget with EventBusMixin { crossAxisAlignment: CrossAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center, children: [ - Expanded( + SizedBox( + height: imageHeight, + width: boxWidth, child: Stack( alignment: const FractionalOffset(0, 0.5), children: [ // 图片展示主框 - LayoutBuilder(builder: (BuildContext context, BoxConstraints constraints) { - return HandwritingDrawBox( - boxWidth: constraints.maxWidth, - boxHeight: constraints.maxHeight, + SingleChildScrollView( + child: HandwritingDrawBox( + boxWidth: boxWidth, + boxHeight: boxHeight, key: _useStateModel.handwritingKey, - ); - }), + ), + ), PageNumberBox(), PreviousNutton(), // 上一页按钮 NextPageButton(), // 下一题按钮 ], ), ), - $BottomPlaybar(handwritingLogic), + $BottomPlaybar(barHeight, handwritingLogic), ], ); } @@ -366,10 +379,7 @@ class _HandwritingDrawBoxState extends State with EventBusMi } }); - executionDataStream = handwritingLogic.toolbar.executionData.listen((e) { - print('555555555555555555555555555555'); - _vnHandWritings.value = e; - }); + executionDataStream = handwritingLogic.toolbar.executionData.listen((e) => _vnHandWritings.value = e); eventOn(callback: (e) { switch (e.runtimeType) { @@ -611,11 +621,11 @@ class PageNumberBox extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.end, children: [ Obx(() { - return quickText('${handwritingLogic.resultData.value?.pageNum}', color: Colors.white, size: 11.sp, align: TextAlign.end); + return quickText('${handwritingLogic.resultData.value?.pageNum ?? 0}', color: Colors.white, size: 11.sp, align: TextAlign.end); }), quickText('/', color: Colors.white, size: 10.sp, align: TextAlign.end), Obx(() { - return quickText('${handwritingLogic.resultData.value?.pageCount}', color: Colors.white, size: 8.sp, align: TextAlign.end); + return quickText('${handwritingLogic.resultData.value?.pageCount ?? 0}', color: Colors.white, size: 8.sp, align: TextAlign.end); }), ], )), @@ -624,7 +634,7 @@ class PageNumberBox extends StatelessWidget { } @hwidget -Widget $bottomPlaybar(BuildContext context, HandwritingLogic handwritingLogic) { +Widget $bottomPlaybar(BuildContext context, double barHeight, HandwritingLogic handwritingLogic) { var timeConsuming = useState(0); var handwritingInfo = useState(null); @@ -704,10 +714,10 @@ Widget $bottomPlaybar(BuildContext context, HandwritingLogic handwritingLogic) { }, []); return Container( - height: 62.h, + height: barHeight, padding: EdgeInsets.symmetric(horizontal: 10.w), alignment: Alignment.center, - color: Color.fromRGBO(0, 0, 0, 0.4), + color: const Color.fromRGBO(0, 0, 0, 0.4), child: Row( crossAxisAlignment: CrossAxisAlignment.center, children: [ diff --git a/making_school_asignment_app/lib/page/home_page/children/homework_review/components/original_manuscript_handwriting/configuration_files/logic.dart b/making_school_asignment_app/lib/page/home_page/children/homework_review/components/original_manuscript_handwriting/configuration_files/logic.dart index 8f78764..8e1cdaa 100644 --- a/making_school_asignment_app/lib/page/home_page/children/homework_review/components/original_manuscript_handwriting/configuration_files/logic.dart +++ b/making_school_asignment_app/lib/page/home_page/children/homework_review/components/original_manuscript_handwriting/configuration_files/logic.dart @@ -2,6 +2,7 @@ import 'dart:ui'; import 'package:get/get.dart'; +import 'package:making_school_asignment_app/common/config/request_config.dart'; import 'package:making_school_asignment_app/common/job/marking_models/do_test_questions_image_info.dart'; import 'package:making_school_asignment_app/common/job/marking_models/original_manuscript_handwriting_params.dart'; import 'package:making_school_asignment_app/common/mixins/request_tool_mixin.dart'; @@ -40,16 +41,21 @@ class HandwritingLogic extends GetxController with RequestToolMixin { Future getData() async { if (params.value == null) return; + var dio = getClientDio(); try { ToastUtils.showLoading(); toolbar.initialization.value = false; imagInfoModel.value = null; + // 设置时长 + + dio.options.receiveTimeout = const Duration(seconds: 20); var res = await getClient().getOriginalManuscriptHandwriting(params.value!); resultData.value = res; } catch (e) { ToastUtils.showError('获取笔迹数据报错,请重试'); backCall(); } finally { + dio.options.receiveTimeout = const Duration(milliseconds: RequestConfig.receiveTimeout); // 还原接收数据时长 ToastUtils.dismiss(); } } diff --git a/making_school_asignment_app/lib/page/home_page/children/student_personal/student_personal_view.dart b/making_school_asignment_app/lib/page/home_page/children/student_personal/student_personal_view.dart index 2a159ef..7ba5d6e 100644 --- a/making_school_asignment_app/lib/page/home_page/children/student_personal/student_personal_view.dart +++ b/making_school_asignment_app/lib/page/home_page/children/student_personal/student_personal_view.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; +import 'package:making_school_asignment_app/common/utils/toast_utils.dart'; import 'package:making_school_asignment_app/common/utils/utils.dart'; import 'package:making_school_asignment_app/page/global_widget/ReturnToHomepage.dart'; import 'package:making_school_asignment_app/page/home_page/children/homework_review/components/original_manuscript_handwriting/answer_handwriting_view.dart'; @@ -75,7 +76,8 @@ class _StudentPersonalPageState extends State { width: 10.r, ), InkWell( - onTap: () => showAnswerHandwriting(context, homeworkId: state.homeworkId, studentId: state.studentId), + onTap: () => + showAnswerHandwriting(context, homeworkId: state.homeworkId, studentId: state.studentId).then((e) => ToastUtils.dismiss()), child: Container( width: 93.r, height: 28.r,