Compare commits
No commits in common. "21183f11bc51890d0191470998463a4db10da184" and "0c54c16865a4063a81e6a9b93839eaa832585ebf" have entirely different histories.
21183f11bc
...
0c54c16865
|
|
@ -218,9 +218,3 @@ marking_app/lib/common/model/event_bus/job_home_refresh_bus.g.dart
|
||||||
marking_app/lib/common/model/job/job_knowledge_points_detail.g.dart
|
marking_app/lib/common/model/job/job_knowledge_points_detail.g.dart
|
||||||
marking_app/lib/common/model/job/job_knowledge_points.g.dart
|
marking_app/lib/common/model/job/job_knowledge_points.g.dart
|
||||||
marking_app/lib/pages/homework_correction/job_knowledge_points.g.dart
|
marking_app/lib/pages/homework_correction/job_knowledge_points.g.dart
|
||||||
marking_app/lib/pages/homework_correction/job_knowledge_points_detail.g.dart
|
|
||||||
marking_app/lib/common/model/job/job_knowledge_detail_student.g.dart
|
|
||||||
marking_app/lib/common/model/job/job_knowledge_detail_student.g.dart
|
|
||||||
marking_app/lib/pages/homework_correction/job_home.g.dart
|
|
||||||
marking_app/lib/common/model/marking/keyboard_assist_event.g.dart
|
|
||||||
marking_app/lib/common/model/marking/marking_history_zoom_info.g.dart
|
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 8.7 KiB |
|
Before Width: | Height: | Size: 9.1 KiB |
|
Before Width: | Height: | Size: 9.8 KiB |
|
Before Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 9.2 KiB |
|
Before Width: | Height: | Size: 229 KiB |
|
Before Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 467 KiB |
|
Before Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 25 KiB |
|
Before Width: | Height: | Size: 28 KiB |
|
Before Width: | Height: | Size: 30 KiB |
|
Before Width: | Height: | Size: 34 KiB |
|
Before Width: | Height: | Size: 26 KiB |
|
Before Width: | Height: | Size: 724 KiB |
|
Before Width: | Height: | Size: 30 KiB |
|
Before Width: | Height: | Size: 3.1 KiB |
|
Before Width: | Height: | Size: 3.3 KiB |
|
Before Width: | Height: | Size: 3.5 KiB |
|
Before Width: | Height: | Size: 3.9 KiB |
|
Before Width: | Height: | Size: 3.3 KiB |
|
Before Width: | Height: | Size: 69 KiB |
|
Before Width: | Height: | Size: 3.5 KiB |
|
|
@ -352,7 +352,7 @@
|
||||||
ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = YES;
|
ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = YES;
|
||||||
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = "";
|
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = "";
|
||||||
CLANG_ENABLE_MODULES = YES;
|
CLANG_ENABLE_MODULES = YES;
|
||||||
CURRENT_PROJECT_VERSION = 21;
|
CURRENT_PROJECT_VERSION = 20;
|
||||||
DEVELOPMENT_TEAM = CYDU583KN6;
|
DEVELOPMENT_TEAM = CYDU583KN6;
|
||||||
ENABLE_BITCODE = NO;
|
ENABLE_BITCODE = NO;
|
||||||
INFOPLIST_FILE = Runner/Info.plist;
|
INFOPLIST_FILE = Runner/Info.plist;
|
||||||
|
|
@ -360,7 +360,7 @@
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0.104;
|
MARKETING_VERSION = 1.0.102;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.example.markingApp;
|
PRODUCT_BUNDLE_IDENTIFIER = com.example.markingApp;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
|
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
|
||||||
|
|
@ -490,7 +490,7 @@
|
||||||
ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = YES;
|
ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = YES;
|
||||||
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = "";
|
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = "";
|
||||||
CLANG_ENABLE_MODULES = YES;
|
CLANG_ENABLE_MODULES = YES;
|
||||||
CURRENT_PROJECT_VERSION = 21;
|
CURRENT_PROJECT_VERSION = 20;
|
||||||
DEVELOPMENT_TEAM = CYDU583KN6;
|
DEVELOPMENT_TEAM = CYDU583KN6;
|
||||||
ENABLE_BITCODE = NO;
|
ENABLE_BITCODE = NO;
|
||||||
INFOPLIST_FILE = Runner/Info.plist;
|
INFOPLIST_FILE = Runner/Info.plist;
|
||||||
|
|
@ -498,7 +498,7 @@
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0.104;
|
MARKETING_VERSION = 1.0.102;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.example.markingApp;
|
PRODUCT_BUNDLE_IDENTIFIER = com.example.markingApp;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
|
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
|
||||||
|
|
@ -520,7 +520,7 @@
|
||||||
ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = YES;
|
ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = YES;
|
||||||
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = "";
|
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = "";
|
||||||
CLANG_ENABLE_MODULES = YES;
|
CLANG_ENABLE_MODULES = YES;
|
||||||
CURRENT_PROJECT_VERSION = 21;
|
CURRENT_PROJECT_VERSION = 20;
|
||||||
DEVELOPMENT_TEAM = CYDU583KN6;
|
DEVELOPMENT_TEAM = CYDU583KN6;
|
||||||
ENABLE_BITCODE = NO;
|
ENABLE_BITCODE = NO;
|
||||||
INFOPLIST_FILE = Runner/Info.plist;
|
INFOPLIST_FILE = Runner/Info.plist;
|
||||||
|
|
@ -528,7 +528,7 @@
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0.104;
|
MARKETING_VERSION = 1.0.102;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.example.markingApp;
|
PRODUCT_BUNDLE_IDENTIFIER = com.example.markingApp;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
|
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
import 'package:collection/collection.dart';
|
|
||||||
import 'package:json_annotation/json_annotation.dart';
|
import 'package:json_annotation/json_annotation.dart';
|
||||||
import 'package:marking_app/common/model/job/job_page_tab.dart';
|
import 'package:marking_app/common/model/job/job_page_tab.dart';
|
||||||
|
|
||||||
|
|
@ -15,21 +14,14 @@ class JobDoSynchroTab extends Object {
|
||||||
Map<String, dynamic> toJson() => _$JobDoSynchroTabToJson(this);
|
Map<String, dynamic> toJson() => _$JobDoSynchroTabToJson(this);
|
||||||
|
|
||||||
/// 当前tab下一个tab的pageIndex
|
/// 当前tab下一个tab的pageIndex
|
||||||
int? getNextPageIndex([int? pageIndex]) {
|
int? getNextPageIndex([int? indexLocated]) {
|
||||||
if (pageIndex == null) return null;
|
if (indexLocated == null) return null;
|
||||||
var _index = tabs.indexWhere((e) => e.pageIndex == pageIndex);
|
return indexLocated == tabs.length - 1 ? null : tabs[indexLocated + 1].pageIndex;
|
||||||
if (_index == -1) return null;
|
|
||||||
|
|
||||||
return _index == tabs.length - 1 ? null : tabs[_index + 1].pageIndex;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// 当前tab上一个tab的pageIndex
|
/// 当前tab上一个tab的pageIndex
|
||||||
int? getPreviousPageIndex([int? pageIndex]) {
|
int? getPreviousPageIndex([int? indexLocated]) {
|
||||||
if (pageIndex == null) return null;
|
if (indexLocated == null) return null;
|
||||||
var _index = tabs.indexWhere((e) => e.pageIndex == pageIndex);
|
return indexLocated == 0 ? null : tabs[indexLocated - 1].pageIndex;
|
||||||
if (_index == -1) return null;
|
|
||||||
pageIndex = _index == 0 ? null : tabs[_index - 1].pageIndex;
|
|
||||||
print('这是上一页的数据:${pageIndex}');
|
|
||||||
return pageIndex;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,25 @@
|
||||||
|
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||||
|
|
||||||
|
part of 'job_knowledge_detail_student.dart';
|
||||||
|
|
||||||
|
// **************************************************************************
|
||||||
|
// JsonSerializableGenerator
|
||||||
|
// **************************************************************************
|
||||||
|
|
||||||
|
JobKnowledgeDetailStudent _$JobKnowledgeDetailStudentFromJson(
|
||||||
|
Map<String, dynamic> json) =>
|
||||||
|
JobKnowledgeDetailStudent(
|
||||||
|
json['studentId'] as int,
|
||||||
|
json['studentName'] as String,
|
||||||
|
json['isAnswer'] as bool,
|
||||||
|
json['isCorrect'] as bool,
|
||||||
|
);
|
||||||
|
|
||||||
|
Map<String, dynamic> _$JobKnowledgeDetailStudentToJson(
|
||||||
|
JobKnowledgeDetailStudent instance) =>
|
||||||
|
<String, dynamic>{
|
||||||
|
'studentId': instance.studentId,
|
||||||
|
'studentName': instance.studentName,
|
||||||
|
'isAnswer': instance.isAnswer,
|
||||||
|
'isCorrect': instance.isCorrect,
|
||||||
|
};
|
||||||
|
|
@ -0,0 +1,18 @@
|
||||||
|
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||||
|
|
||||||
|
part of 'keyboard_assist_event.dart';
|
||||||
|
|
||||||
|
// **************************************************************************
|
||||||
|
// JsonSerializableGenerator
|
||||||
|
// **************************************************************************
|
||||||
|
|
||||||
|
KeyboardAssistEvent _$KeyboardAssistEventFromJson(Map<String, dynamic> json) =>
|
||||||
|
KeyboardAssistEvent(
|
||||||
|
openAuxiliary: json['openAuxiliary'] as bool? ?? false,
|
||||||
|
);
|
||||||
|
|
||||||
|
Map<String, dynamic> _$KeyboardAssistEventToJson(
|
||||||
|
KeyboardAssistEvent instance) =>
|
||||||
|
<String, dynamic>{
|
||||||
|
'openAuxiliary': instance.openAuxiliary,
|
||||||
|
};
|
||||||
|
|
@ -0,0 +1,27 @@
|
||||||
|
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||||
|
|
||||||
|
part of 'marking_history_zoom_info.dart';
|
||||||
|
|
||||||
|
// **************************************************************************
|
||||||
|
// JsonSerializableGenerator
|
||||||
|
// **************************************************************************
|
||||||
|
|
||||||
|
MarkingHistoryZoomInfo _$MarkingHistoryZoomInfoFromJson(
|
||||||
|
Map<String, dynamic> json) =>
|
||||||
|
MarkingHistoryZoomInfo(
|
||||||
|
markingUserId: json['markingUserId'] as int,
|
||||||
|
questionNum: json['questionNum'] as String,
|
||||||
|
scale: (json['scale'] as num).toDouble(),
|
||||||
|
positionY: (json['positionY'] as num).toDouble(),
|
||||||
|
positionX: (json['positionX'] as num).toDouble(),
|
||||||
|
);
|
||||||
|
|
||||||
|
Map<String, dynamic> _$MarkingHistoryZoomInfoToJson(
|
||||||
|
MarkingHistoryZoomInfo instance) =>
|
||||||
|
<String, dynamic>{
|
||||||
|
'markingUserId': instance.markingUserId,
|
||||||
|
'questionNum': instance.questionNum,
|
||||||
|
'scale': instance.scale,
|
||||||
|
'positionY': instance.positionY,
|
||||||
|
'positionX': instance.positionX,
|
||||||
|
};
|
||||||
|
|
@ -290,24 +290,19 @@ Widget $dropdownBoxSwitchStudentsOrTypeView(BuildContext context, {required Func
|
||||||
var _currentTab = _useSwitchStudentAndType.currentTab.value;
|
var _currentTab = _useSwitchStudentAndType.currentTab.value;
|
||||||
var _pageIndex = _currentTab?.pageIndex;
|
var _pageIndex = _currentTab?.pageIndex;
|
||||||
if (_currentTab == null || _pageIndex == null) return;
|
if (_currentTab == null || _pageIndex == null) return;
|
||||||
_useSwitchStudentAndType.refreshQuestionTypeData(context, taskId: taskId, exitCallback: exitCallback, getNewData: false).then((value) {
|
var params = MarkingTextQuestionJobTabParamsBus(taskId, _pageIndex);
|
||||||
var params = MarkingTextQuestionJobTabParamsBus(taskId, _pageIndex);
|
if (_currentTab.finishCount + 1 == _currentTab.total) {
|
||||||
if (_currentTab.finishCount < _currentTab.total) {
|
var _currentTabNew =
|
||||||
if (_currentTab.finishCount + 1 == _currentTab.total) {
|
_useSwitchStudentAndType.tabs.value.firstWhereOrNull((e) => e.pageIndex != _currentTab.pageIndex && e.finishCount != e.total);
|
||||||
var _currentTabNew =
|
// 如果全部都已经批阅完成就不需要跳转到不必要得批阅试题
|
||||||
_useSwitchStudentAndType.tabs.value.firstWhereOrNull((e) => e.pageIndex != _currentTab.pageIndex && e.finishCount != e.total);
|
if (_currentTabNew != null) params.pageIndex = _currentTabNew.pageIndex;
|
||||||
// 如果全部都已经批阅完成就不需要跳转到不必要得批阅试题
|
}
|
||||||
if (_currentTabNew != null) params.pageIndex = _currentTabNew.pageIndex;
|
var _theCurrentPage = _useSwitchStudentAndType.tabs.value.firstWhereOrNull((element) => element.pageIndex == _pageIndex);
|
||||||
}
|
if (_theCurrentPage != null) {
|
||||||
var _theCurrentPage = _useSwitchStudentAndType.tabs.value.firstWhereOrNull((element) => element.pageIndex == _pageIndex);
|
_theCurrentPage.finishCount += 1;
|
||||||
if (_theCurrentPage != null) {
|
_useSwitchStudentAndType.tabs.value = _useSwitchStudentAndType.tabs.value.map((e) => JobPageTab.fromJson(e.toJson())).toList();
|
||||||
_theCurrentPage.finishCount += 1;
|
}
|
||||||
_useSwitchStudentAndType.tabs.value = _useSwitchStudentAndType.tabs.value.map((e) => JobPageTab.fromJson(e.toJson())).toList();
|
_useSwitchStudentAndType.eventFire(model: params);
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
_useSwitchStudentAndType.eventFire(model: params);
|
|
||||||
});
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
}
|
}
|
||||||
|
|
@ -401,7 +396,7 @@ Widget $dropdownBoxSwitchStudentsOrTypeView(BuildContext context, {required Func
|
||||||
),
|
),
|
||||||
Expanded(flex: 1, child: SizedBox()),
|
Expanded(flex: 1, child: SizedBox()),
|
||||||
Expanded(
|
Expanded(
|
||||||
flex: isPad() ? 4 : 5,
|
flex: 4,
|
||||||
child: Row(
|
child: Row(
|
||||||
crossAxisAlignment: CrossAxisAlignment.center,
|
crossAxisAlignment: CrossAxisAlignment.center,
|
||||||
mainAxisAlignment: MainAxisAlignment.end,
|
mainAxisAlignment: MainAxisAlignment.end,
|
||||||
|
|
@ -420,7 +415,9 @@ Widget $dropdownBoxSwitchStudentsOrTypeView(BuildContext context, {required Func
|
||||||
'DO_PAPERS_JOB_CONTINUE_TO_REVIEW',
|
'DO_PAPERS_JOB_CONTINUE_TO_REVIEW',
|
||||||
() {
|
() {
|
||||||
var _currentTabNew = _useSwitchStudentAndType.tabs.value.firstWhere((e) => e.finishCount < e.total);
|
var _currentTabNew = _useSwitchStudentAndType.tabs.value.firstWhere((e) => e.finishCount < e.total);
|
||||||
_useSwitchStudentAndType.eventFire(model: MarkingTextQuestionJobTabParamsBus(taskId, _currentTabNew.pageIndex));
|
_useSwitchStudentAndType.eventFire(
|
||||||
|
model: MarkingTextQuestionJobTabParamsBus(taskId, _currentTabNew.pageIndex),
|
||||||
|
);
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
child: quickText(
|
child: quickText(
|
||||||
|
|
@ -471,6 +468,41 @@ Widget $dropdownBoxSwitchStudentsOrTypeView(BuildContext context, {required Func
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
// InkWell(
|
||||||
|
// onTap: () => easyThrottle(
|
||||||
|
// 'prioritize_homework_review',
|
||||||
|
// () => !_useSwitchStudentAndType.isFirst.value
|
||||||
|
// ? _useSwitchStudentAndType.jobPriorityReviewJoin(jobId)
|
||||||
|
// : _useSwitchStudentAndType.jobPriorityReviewCancel(jobId)),
|
||||||
|
// child:
|
||||||
|
// Row(
|
||||||
|
// crossAxisAlignment: CrossAxisAlignment.center,
|
||||||
|
// mainAxisAlignment: MainAxisAlignment.start,
|
||||||
|
// children: [
|
||||||
|
// Stack(
|
||||||
|
// alignment: const FractionalOffset(0.52, 0.24),
|
||||||
|
// children: [
|
||||||
|
// Icon(
|
||||||
|
// const IconData(0xe63d, fontFamily: "AlibabaIcon"),
|
||||||
|
// size: 12.sp,
|
||||||
|
// color: _useSwitchStudentAndType.isFirst.value
|
||||||
|
// ? Color.fromRGBO(76, 199, 147, 1)
|
||||||
|
// : Color.fromRGBO(164, 164, 164, 1),
|
||||||
|
// ),
|
||||||
|
// quickText('优先', size: 4.sp, color: Colors.white),
|
||||||
|
// ],
|
||||||
|
// ),
|
||||||
|
// SizedBox(width: 1.2.w),
|
||||||
|
// quickText(
|
||||||
|
// '优先批阅',
|
||||||
|
// size: 10.sp,
|
||||||
|
// color: _useSwitchStudentAndType.isFirst.value
|
||||||
|
// ? Color.fromRGBO(76, 199, 147, 1)
|
||||||
|
// : Color.fromRGBO(164, 164, 164, 1),
|
||||||
|
// ),
|
||||||
|
// ],
|
||||||
|
// ),
|
||||||
|
// ),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|
@ -509,14 +541,7 @@ class _EexamPaperAndScoringViewState extends ConsumerState<ExamPaperAndScoringVi
|
||||||
var theEventVal = eventVal as MarkingTextQuestionJobTabParamsBus;
|
var theEventVal = eventVal as MarkingTextQuestionJobTabParamsBus;
|
||||||
bool? isDefaultFirst;
|
bool? isDefaultFirst;
|
||||||
if (theJobData != null) {
|
if (theJobData != null) {
|
||||||
isDefaultFirst = theJobData!.pageIndex == theEventVal.pageIndex ? null : theJobData!.pageIndex < theEventVal.pageIndex;
|
isDefaultFirst = theJobData!.pageIndex < theEventVal.pageIndex;
|
||||||
} else {
|
|
||||||
if (synchroTabs?.tabs.isNotEmpty ?? false) {
|
|
||||||
var _theTab = synchroTabs?.tabs.firstWhereOrNull((e) => e.pageIndex == theEventVal.pageIndex);
|
|
||||||
if (_theTab != null && _theTab.finishCount == _theTab.total) {
|
|
||||||
isDefaultFirst = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
ref.read(doJobObtainGradingDataProvider.notifier).setVal(MarkingTextQuestionJobTabParams(
|
ref.read(doJobObtainGradingDataProvider.notifier).setVal(MarkingTextQuestionJobTabParams(
|
||||||
pageIndex: theEventVal.pageIndex,
|
pageIndex: theEventVal.pageIndex,
|
||||||
|
|
@ -554,8 +579,8 @@ class _EexamPaperAndScoringViewState extends ConsumerState<ExamPaperAndScoringVi
|
||||||
var jobDetails = _result.data;
|
var jobDetails = _result.data;
|
||||||
theJobData = jobDetails;
|
theJobData = jobDetails;
|
||||||
if (jobDetails != null) {
|
if (jobDetails != null) {
|
||||||
jobDetails.previousPageIndex = synchroTabs?.getPreviousPageIndex(jobDetails.pageIndex);
|
jobDetails.previousPageIndex = synchroTabs?.getPreviousPageIndex(jobDetails.pageIndex - 1);
|
||||||
jobDetails.nextPageIndex = synchroTabs?.getNextPageIndex(jobDetails.pageIndex);
|
jobDetails.nextPageIndex = synchroTabs?.getNextPageIndex(jobDetails.pageIndex - 1);
|
||||||
// 触发学生下拉选中
|
// 触发学生下拉选中
|
||||||
try {
|
try {
|
||||||
// 清空已有数据
|
// 清空已有数据
|
||||||
|
|
@ -593,15 +618,8 @@ class _EexamPaperAndScoringViewState extends ConsumerState<ExamPaperAndScoringVi
|
||||||
pageIndex: jobData.pageIndex,
|
pageIndex: jobData.pageIndex,
|
||||||
nextPageIndex: jobData.nextPageIndex,
|
nextPageIndex: jobData.nextPageIndex,
|
||||||
previousPageIndex: jobData.previousPageIndex,
|
previousPageIndex: jobData.previousPageIndex,
|
||||||
|
isDefaultFirst: true,
|
||||||
);
|
);
|
||||||
if (jobData.nextId == 0 && (synchroTabs?.tabs.isNotEmpty ?? false)) {
|
|
||||||
var _pageIndex = jobData.pageIndex;
|
|
||||||
var _tabIndex = synchroTabs!.tabs.indexWhere((e) => e.pageIndex == _pageIndex);
|
|
||||||
if (_tabIndex != -1 && _tabIndex + 1 <= synchroTabs!.tabs.length - 1) {
|
|
||||||
model.isDefaultFirst = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (model.paperId == 0 && jobData.nextPageIndex != null) {
|
if (model.paperId == 0 && jobData.nextPageIndex != null) {
|
||||||
// 切换题型页面
|
// 切换题型页面
|
||||||
model.paperId = null;
|
model.paperId = null;
|
||||||
|
|
@ -617,16 +635,8 @@ class _EexamPaperAndScoringViewState extends ConsumerState<ExamPaperAndScoringVi
|
||||||
paperId: jobData.prevId,
|
paperId: jobData.prevId,
|
||||||
nextPageIndex: jobData.nextPageIndex,
|
nextPageIndex: jobData.nextPageIndex,
|
||||||
previousPageIndex: jobData.previousPageIndex,
|
previousPageIndex: jobData.previousPageIndex,
|
||||||
|
isDefaultFirst: false,
|
||||||
);
|
);
|
||||||
|
|
||||||
if (jobData.prevId == 0 && (synchroTabs?.tabs.isNotEmpty ?? false)) {
|
|
||||||
var _pageIndex = jobData.pageIndex;
|
|
||||||
var _tabIndex = synchroTabs!.tabs.indexWhere((e) => e.pageIndex == _pageIndex);
|
|
||||||
if (_tabIndex != -1 && _tabIndex - 1 >= 0 && _tabIndex - 1 <= synchroTabs!.tabs.length - 1) {
|
|
||||||
model.isDefaultFirst = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (model.paperId == 0 && jobData.previousPageIndex != null) {
|
if (model.paperId == 0 && jobData.previousPageIndex != null) {
|
||||||
model.paperId = null;
|
model.paperId = null;
|
||||||
model.pageIndex = jobData.previousPageIndex!;
|
model.pageIndex = jobData.previousPageIndex!;
|
||||||
|
|
|
||||||
|
|
@ -99,12 +99,8 @@ class UseSwitchStudentAndType with CommonMixin, EventBusMixin {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// 属性tab类型数据
|
/// 属性tab类型数据
|
||||||
Future<JobPageTab?> refreshQuestionTypeData(BuildContext context,
|
Future<JobPageTab?> refreshQuestionTypeData(BuildContext context, {required int taskId, required Function() exitCallback}) async {
|
||||||
{required int taskId, required Function() exitCallback, bool getNewData = true}) async {
|
List<JobPageTab>? tabDatas = await getDataForTestpaper(taskId: taskId, synchronization: false);
|
||||||
List<JobPageTab>? tabDatas = tabs.value;
|
|
||||||
if (getNewData) {
|
|
||||||
tabDatas = await getDataForTestpaper(taskId: taskId, synchronization: false);
|
|
||||||
}
|
|
||||||
if (tabDatas?.isNotEmpty ?? false) {
|
if (tabDatas?.isNotEmpty ?? false) {
|
||||||
JobPageTab? tabJob = tabDatas!.firstWhereOrNull((e) => e.finishCount < e.total);
|
JobPageTab? tabJob = tabDatas!.firstWhereOrNull((e) => e.finishCount < e.total);
|
||||||
if (tabJob == null && !exitPromptFlag.value) {
|
if (tabJob == null && !exitPromptFlag.value) {
|
||||||
|
|
@ -128,20 +124,9 @@ class UseSwitchStudentAndType with CommonMixin, EventBusMixin {
|
||||||
exitCallback();
|
exitCallback();
|
||||||
} else {
|
} else {
|
||||||
// 跳转到对于位置
|
// 跳转到对于位置
|
||||||
if (!getNewData) return tabJob;
|
|
||||||
tabs.value = tabDatas;
|
tabs.value = tabDatas;
|
||||||
if (tabJob != null) currentTab.value = tabJob;
|
if (tabJob != null) currentTab.value = tabJob;
|
||||||
if (tabJob == null && exitPromptFlag.value) {
|
if (tabJob == null && exitPromptFlag.value) ToastUtils.showSuccess('最后一题提交成功');
|
||||||
var _thePageIndex = currentTab.value?.pageIndex;
|
|
||||||
if (_thePageIndex != null) {
|
|
||||||
var _theIndex = tabDatas.indexWhere((e) => e.pageIndex == _thePageIndex);
|
|
||||||
if (_theIndex != -1 && _theIndex < tabDatas.length - 1) {
|
|
||||||
currentTab.value = tabDatas[_theIndex + 1];
|
|
||||||
return tabJob;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
ToastUtils.showSuccess('最后一题提交成功');
|
|
||||||
}
|
|
||||||
return tabJob;
|
return tabJob;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,6 @@
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
import 'package:flutter_hooks/flutter_hooks.dart';
|
|
||||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||||
import 'package:functional_widget_annotation/functional_widget_annotation.dart';
|
|
||||||
import 'package:marking_app/common/mixin/common.dart';
|
import 'package:marking_app/common/mixin/common.dart';
|
||||||
import 'package:marking_app/common/model/event_bus/job_home_refresh_bus.dart';
|
import 'package:marking_app/common/model/event_bus/job_home_refresh_bus.dart';
|
||||||
import 'package:marking_app/common/model/marking/marking_list_params.dart';
|
import 'package:marking_app/common/model/marking/marking_list_params.dart';
|
||||||
|
|
@ -15,8 +13,6 @@ import 'package:badges/badges.dart' as badges;
|
||||||
|
|
||||||
import '../../utils/my_future_builder.dart';
|
import '../../utils/my_future_builder.dart';
|
||||||
|
|
||||||
part 'job_home.g.dart';
|
|
||||||
|
|
||||||
class JobHome extends StatefulWidget {
|
class JobHome extends StatefulWidget {
|
||||||
const JobHome({super.key});
|
const JobHome({super.key});
|
||||||
|
|
||||||
|
|
@ -28,10 +24,50 @@ class _JobHomeState extends State<JobHome> with CommonMixin, EventBusMixin, Auto
|
||||||
@override
|
@override
|
||||||
bool get wantKeepAlive => true;
|
bool get wantKeepAlive => true;
|
||||||
|
|
||||||
|
late Future<int> _future;
|
||||||
|
List<EntranceModel> entrances = [
|
||||||
|
EntranceModel(
|
||||||
|
title: '作业批阅',
|
||||||
|
image: '',
|
||||||
|
navigationUrl: RouterManager.jobMainListPagePath,
|
||||||
|
),
|
||||||
|
EntranceModel(
|
||||||
|
title: '学生历史作业',
|
||||||
|
image: '',
|
||||||
|
navigationUrl: RouterManager.jobStudentGroupPath,
|
||||||
|
page:'history',
|
||||||
|
|
||||||
|
),
|
||||||
|
EntranceModel(
|
||||||
|
title: '知识点掌握',
|
||||||
|
image: '',
|
||||||
|
navigationUrl: RouterManager.jobKnowledgePointsPath,
|
||||||
|
),
|
||||||
|
EntranceModel(
|
||||||
|
title: '答题轨迹',
|
||||||
|
image: '',
|
||||||
|
navigationUrl: RouterManager.answerTrajectoryPath,
|
||||||
|
),
|
||||||
|
EntranceModel(
|
||||||
|
title: '优先批阅设定',
|
||||||
|
image: '',
|
||||||
|
navigationUrl: RouterManager.jobStudentGroupPath,
|
||||||
|
page:'set',
|
||||||
|
),
|
||||||
|
EntranceModel(
|
||||||
|
title: '批阅设置',
|
||||||
|
image: '',
|
||||||
|
navigationUrl: '',
|
||||||
|
),
|
||||||
|
];
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
getData();
|
_future = getData();
|
||||||
eventOn(callback: (JobHomeRefreshBus item) => getData());
|
eventOn(callback: (JobHomeRefreshBus item) {
|
||||||
|
_future = getData();
|
||||||
|
toUpState(setState, () {}, mounted);
|
||||||
|
});
|
||||||
super.initState();
|
super.initState();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -50,9 +86,7 @@ class _JobHomeState extends State<JobHome> with CommonMixin, EventBusMixin, Auto
|
||||||
limit: 1,
|
limit: 1,
|
||||||
pageType: 0,
|
pageType: 0,
|
||||||
));
|
));
|
||||||
var data = _result.data?.total ?? 0;
|
return _result.data?.total ?? 0;
|
||||||
eventFire(model: QuantityToBeReviewedData(data));
|
|
||||||
return data;
|
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
@ -61,7 +95,7 @@ class _JobHomeState extends State<JobHome> with CommonMixin, EventBusMixin, Auto
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
super.build(context);
|
super.build(context);
|
||||||
var spaceWidth = SizedBox(height: ScreenUtil().screenWidth / 19);
|
|
||||||
return AnnotatedRegion(
|
return AnnotatedRegion(
|
||||||
value: const SystemUiOverlayStyle(
|
value: const SystemUiOverlayStyle(
|
||||||
systemNavigationBarColor: Color(0xFF000000),
|
systemNavigationBarColor: Color(0xFF000000),
|
||||||
|
|
@ -71,42 +105,87 @@ class _JobHomeState extends State<JobHome> with CommonMixin, EventBusMixin, Auto
|
||||||
statusBarIconBrightness: Brightness.dark,
|
statusBarIconBrightness: Brightness.dark,
|
||||||
statusBarBrightness: Brightness.light,
|
statusBarBrightness: Brightness.light,
|
||||||
),
|
),
|
||||||
child: RefreshIndicator(
|
child: Scaffold(
|
||||||
onRefresh: () async => eventFire(model: JobHomeRefreshBus()),
|
appBar: AppBar(
|
||||||
child: ListView(
|
backgroundColor: Colors.white,
|
||||||
children: [
|
centerTitle: true, // 标题居中
|
||||||
Container(
|
title: quickText('我的作业管理'),
|
||||||
height: 200.h,
|
systemOverlayStyle: SystemUiOverlayStyle.dark,
|
||||||
width: double.infinity,
|
),
|
||||||
decoration: BoxDecoration(
|
backgroundColor: Color.fromRGBO(244, 244, 244, 1),
|
||||||
image: DecorationImage(
|
body: RefreshIndicator(
|
||||||
image: AssetImage('assets/images/job_home_top_bgm.png'),
|
onRefresh: () async {
|
||||||
fit: BoxFit.fill, // 完全填充
|
_future = getData();
|
||||||
|
toUpState(setState, () {}, mounted);
|
||||||
|
},
|
||||||
|
child: MyFutureBuilder.buildFutureBuilderOfSingleInstance<int>(context, _future, (data) {
|
||||||
|
if (data == null)
|
||||||
|
return Center(
|
||||||
|
child: Container(
|
||||||
|
child: TextButton(
|
||||||
|
onPressed: () {
|
||||||
|
_future = getData();
|
||||||
|
toUpState(setState, () {}, mounted);
|
||||||
|
},
|
||||||
|
child: quickText('没有获取到数据,点击重试'),
|
||||||
|
),
|
||||||
),
|
),
|
||||||
|
);
|
||||||
|
|
||||||
|
return Container(
|
||||||
|
padding: EdgeInsets.symmetric(vertical: 40.h, horizontal: 20.w),
|
||||||
|
child: GridView(
|
||||||
|
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
|
||||||
|
crossAxisCount: 2,
|
||||||
|
mainAxisSpacing: 24.r,
|
||||||
|
crossAxisSpacing: 24.r,
|
||||||
|
childAspectRatio: 556 / 200,
|
||||||
|
),
|
||||||
|
children: entrances.map((e) {
|
||||||
|
bool isJob = e.title == '作业批阅';
|
||||||
|
|
||||||
|
return InkWell(
|
||||||
|
onTap: () => easyThrottle('GO_TO_JOB_HOME_NAVIGATION', () {
|
||||||
|
if(e.page != ''){
|
||||||
|
RouterManager.router.navigateTo(context, '${e.navigationUrl}?page=${e.page}', transition: getTransition());
|
||||||
|
}else{
|
||||||
|
RouterManager.router.navigateTo(context, e.navigationUrl, transition: getTransition());
|
||||||
|
}
|
||||||
|
|
||||||
|
}),
|
||||||
|
child: badges.Badge(
|
||||||
|
showBadge: isJob && data > 0,
|
||||||
|
ignorePointer: false,
|
||||||
|
badgeContent: quickText(data, color: Colors.white),
|
||||||
|
badgeAnimation: badges.BadgeAnimation.rotation(
|
||||||
|
animationDuration: Duration(seconds: 1),
|
||||||
|
colorChangeAnimationDuration: Duration(seconds: 1),
|
||||||
|
loopAnimation: false,
|
||||||
|
curve: Curves.fastOutSlowIn,
|
||||||
|
colorChangeAnimationCurve: Curves.easeInCubic,
|
||||||
|
),
|
||||||
|
child: Container(
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
borderRadius: BorderRadius.all(Radius.circular(6.r)),
|
||||||
|
border: Border.all(
|
||||||
|
width: 0.5.w,
|
||||||
|
color: Color.fromARGB(255, 219, 226, 250),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
alignment: Alignment.center,
|
||||||
|
child: Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
|
children: [
|
||||||
|
// Image(image: e.image),
|
||||||
|
quickText(e.title, size: 12.sp),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
));
|
||||||
|
}).toList(),
|
||||||
),
|
),
|
||||||
),
|
);
|
||||||
SizedBox(height: 30.h),
|
}),
|
||||||
SlidingData([
|
|
||||||
EntranceModel(title: '作业批阅', image: 'assets/images/job_home_marking.png', navigationUrl: ''),
|
|
||||||
EntranceModel(
|
|
||||||
title: '学生历史作业',
|
|
||||||
image: 'assets/images/job_home_history.png',
|
|
||||||
navigationUrl: '${RouterManager.jobStudentGroupPath}?page=history',
|
|
||||||
),
|
|
||||||
EntranceModel(title: '知识点点掌握', image: 'assets/images/job_home_knowledge.png', navigationUrl: '')
|
|
||||||
]),
|
|
||||||
spaceWidth,
|
|
||||||
$TermRow([
|
|
||||||
EntranceModel(title: '答题轨迹', image: 'assets/images/job_home_answer_record.png', navigationUrl: ''),
|
|
||||||
EntranceModel(
|
|
||||||
title: '优先批阅设定',
|
|
||||||
image: 'assets/images/job_home_youxian.png',
|
|
||||||
navigationUrl: '${RouterManager.jobStudentGroupPath}?page=set',
|
|
||||||
)
|
|
||||||
], 0),
|
|
||||||
spaceWidth,
|
|
||||||
$TermRow([EntranceModel(title: '批阅设置', image: 'assets/images/job_home_marking_set.png', navigationUrl: '')], 0),
|
|
||||||
],
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
@ -117,146 +196,6 @@ class EntranceModel extends Object {
|
||||||
String title;
|
String title;
|
||||||
String image;
|
String image;
|
||||||
String navigationUrl;
|
String navigationUrl;
|
||||||
EntranceModel({required this.title, required this.image, required this.navigationUrl});
|
String? page;
|
||||||
}
|
EntranceModel({required this.title, required this.image, required this.navigationUrl,this.page = ''});
|
||||||
|
|
||||||
class QuantityToBeReviewedData extends Object {
|
|
||||||
int num;
|
|
||||||
QuantityToBeReviewedData(this.num);
|
|
||||||
}
|
|
||||||
|
|
||||||
@swidget
|
|
||||||
Widget $termRow(BuildContext context, List<EntranceModel> items, int data) {
|
|
||||||
var leng = items.length;
|
|
||||||
Widget childWidget;
|
|
||||||
switch (leng) {
|
|
||||||
case 1:
|
|
||||||
childWidget = Row(children: [Expanded(child: $TermItem(items[0], data))]);
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
childWidget = Row(children: [
|
|
||||||
Expanded(flex: 9, child: $TermItem(items[0], data)),
|
|
||||||
Expanded(flex: 1, child: SizedBox()),
|
|
||||||
Expanded(flex: 9, child: $TermItem(items[1], data)),
|
|
||||||
]);
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
double _theHeight = ScreenUtil().screenWidth / 19 + 54.h * 2;
|
|
||||||
childWidget = Row(
|
|
||||||
children: [
|
|
||||||
Expanded(child: $TermItem(items[0], data, theHeight: _theHeight)),
|
|
||||||
SizedBox(width: ScreenUtil().screenWidth / 19),
|
|
||||||
Expanded(
|
|
||||||
child: SizedBox(
|
|
||||||
height: _theHeight,
|
|
||||||
child: Column(
|
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
|
||||||
children: [
|
|
||||||
$TermItem(items[1], data),
|
|
||||||
$TermItem(items[2], data),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
childWidget = Container();
|
|
||||||
}
|
|
||||||
|
|
||||||
return Container(padding: EdgeInsets.symmetric(horizontal: 14.w), child: childWidget);
|
|
||||||
}
|
|
||||||
|
|
||||||
@swidget
|
|
||||||
Widget $termItem(BuildContext context, EntranceModel e, int data, {double? theHeight}) {
|
|
||||||
bool isJob = e.title == '作业批阅';
|
|
||||||
|
|
||||||
return Material(
|
|
||||||
color: Colors.white,
|
|
||||||
elevation: 3.r,
|
|
||||||
shadowColor: const Color.fromRGBO(231, 231, 231, 1),
|
|
||||||
borderRadius: BorderRadius.all(Radius.circular(8.r)),
|
|
||||||
child: InkWell(
|
|
||||||
onTap: () => easyThrottle('GO_TO_JOB_HOME_NAVIGATION', () {
|
|
||||||
RouterManager.router.navigateTo(context, e.navigationUrl, transition: getTransition());
|
|
||||||
}),
|
|
||||||
|
|
||||||
// splashColor: splashColor,
|
|
||||||
borderRadius: BorderRadius.all(Radius.circular(8.r)),
|
|
||||||
child: badges.Badge(
|
|
||||||
showBadge: isJob && data > 0,
|
|
||||||
ignorePointer: false,
|
|
||||||
badgeContent: quickText(data, color: Colors.white, size: 10.sp),
|
|
||||||
badgeAnimation: badges.BadgeAnimation.rotation(
|
|
||||||
animationDuration: Duration(seconds: 1),
|
|
||||||
colorChangeAnimationDuration: Duration(seconds: 1),
|
|
||||||
loopAnimation: false,
|
|
||||||
curve: Curves.fastOutSlowIn,
|
|
||||||
colorChangeAnimationCurve: Curves.easeInCubic,
|
|
||||||
),
|
|
||||||
badgeStyle: badges.BadgeStyle(
|
|
||||||
badgeColor: Color.fromRGBO(255, 105, 105, 1),
|
|
||||||
shape: badges.BadgeShape.square,
|
|
||||||
borderRadius: BorderRadius.only(topLeft: Radius.circular(10.r), topRight: Radius.circular(8.5.r), bottomRight: Radius.circular(8.5.r)),
|
|
||||||
// borderSide: BorderSide(color: Colors.white, width: 2),
|
|
||||||
elevation: 1,
|
|
||||||
padding: EdgeInsets.symmetric(horizontal: isPad() ? 11.w : 16.w, vertical: 2.h),
|
|
||||||
),
|
|
||||||
position: badges.BadgePosition.topEnd(top: 10.r, end: 10.r),
|
|
||||||
child: Container(
|
|
||||||
height: theHeight,
|
|
||||||
padding: EdgeInsets.symmetric(vertical: 12.h),
|
|
||||||
decoration: BoxDecoration(
|
|
||||||
borderRadius: BorderRadius.all(Radius.circular(8.r)),
|
|
||||||
// boxShadow: [
|
|
||||||
// BoxShadow(
|
|
||||||
// color: const Color.fromRGBO(231, 231, 231, 1),
|
|
||||||
// offset: Offset(4.w, 6.h), //阴影y轴偏移量
|
|
||||||
// blurRadius: 8, //阴影模糊程度
|
|
||||||
// spreadRadius: 0.2, //阴影扩散程度
|
|
||||||
// )
|
|
||||||
// ],
|
|
||||||
// border: Border.all(width: 0.5.w, color: Color.fromARGB(255, 219, 226, 250)),
|
|
||||||
),
|
|
||||||
alignment: Alignment.center,
|
|
||||||
child: isJob
|
|
||||||
? Column(
|
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
|
||||||
children: [
|
|
||||||
Image.asset(e.image, height: 32.r, width: 32.r, fit: BoxFit.cover),
|
|
||||||
SizedBox(height: 6.r),
|
|
||||||
quickText(e.title, size: 12.sp, color: Color.fromRGBO(79, 79, 79, 1), fontWeight: FontWeight.w500),
|
|
||||||
],
|
|
||||||
)
|
|
||||||
: Row(
|
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
|
||||||
children: [
|
|
||||||
Image.asset(e.image, height: 32.r, width: 32.r, fit: BoxFit.cover),
|
|
||||||
SizedBox(width: 6.r),
|
|
||||||
quickText(e.title, size: 12.sp, color: Color.fromRGBO(79, 79, 79, 1), fontWeight: FontWeight.w500),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
)),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
class SlidingData extends HookWidget with EventBusMixin {
|
|
||||||
final List<EntranceModel> items;
|
|
||||||
SlidingData(this.items);
|
|
||||||
|
|
||||||
@override
|
|
||||||
Widget build(BuildContext context) {
|
|
||||||
var dataNumber = useState<QuantityToBeReviewedData?>(null);
|
|
||||||
|
|
||||||
useEffect(() {
|
|
||||||
eventOn(callback: (QuantityToBeReviewedData data) => (dataNumber.value = data));
|
|
||||||
return () {
|
|
||||||
eventCancel();
|
|
||||||
};
|
|
||||||
}, []);
|
|
||||||
|
|
||||||
return $TermRow(items, dataNumber.value?.num ?? 0);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -155,8 +155,7 @@ class TheMainPageState extends ConsumerState<TheMainPage> with CommonMixin {
|
||||||
child: Scaffold(
|
child: Scaffold(
|
||||||
body: PageView(
|
body: PageView(
|
||||||
controller: _pageController,
|
controller: _pageController,
|
||||||
// physics: const BouncingScrollPhysics(),
|
physics: const BouncingScrollPhysics(),
|
||||||
physics: NeverScrollableScrollPhysics(),
|
|
||||||
onPageChanged: (index) => toUpState(setState, () => tabIndex = index, mounted),
|
onPageChanged: (index) => toUpState(setState, () => tabIndex = index, mounted),
|
||||||
children: _bodyList,
|
children: _bodyList,
|
||||||
),
|
),
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,7 @@ publish_to: "none" # Remove this line if you wish to publish to pub.dev
|
||||||
# In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion.
|
# In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion.
|
||||||
# Read more about iOS versioning at
|
# Read more about iOS versioning at
|
||||||
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
|
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
|
||||||
version: 1.0.104
|
version: 1.0.102
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ">=2.17.1 <3.0.0"
|
sdk: ">=2.17.1 <3.0.0"
|
||||||
|
|
|
||||||