Compare commits
10 Commits
update_sco
...
main
| Author | SHA1 | Date |
|---|---|---|
|
|
068cbbe550 | |
|
|
41bfa32ad6 | |
|
|
4eb28224d3 | |
|
|
fc3f656c66 | |
|
|
c9edeb662f | |
|
|
e05d7c4395 | |
|
|
c75f0f191c | |
|
|
28a03f1cde | |
|
|
b3b58fb55f | |
|
|
8ed3b85b92 |
|
|
@ -230,3 +230,4 @@ marking_app/lib/pages/homework_correction/widget/answer_handwriting.g.dart
|
|||
marking_app/lib/pages/report_detail/report_history.g.dart
|
||||
marking_app/lib/common/model/report/report_student_history_record.g.dart
|
||||
marking_app/lib/common/model/report/report_student_info.g.dart
|
||||
marking_app/lib/pages/login/index.g.dart
|
||||
|
|
|
|||
|
|
@ -117,4 +117,4 @@ SPEC CHECKSUMS:
|
|||
|
||||
PODFILE CHECKSUM: 64629b724b9886c2d78e6972ff5ef90e370df047
|
||||
|
||||
COCOAPODS: 1.11.3
|
||||
COCOAPODS: 1.12.1
|
||||
|
|
|
|||
|
|
@ -16,6 +16,177 @@
|
|||
EE3BAAE20F3BEC99D310EC6B /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9AE64B664D96A59005B338D3 /* Pods_Runner.framework */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXContainerItemProxy section */
|
||||
0B2156402C0D8FFF00D5A718 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 0B2156242C0D8FFF00D5A718 /* Pods.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = 3E842772C2699BC8F65359A06505C5A5;
|
||||
remoteInfo = app_installer;
|
||||
};
|
||||
0B2156422C0D8FFF00D5A718 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 0B2156242C0D8FFF00D5A718 /* Pods.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = 6D3FD4746C5C4B5292B7C4C862F01EF9;
|
||||
remoteInfo = connectivity_plus;
|
||||
};
|
||||
0B2156442C0D8FFF00D5A718 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 0B2156242C0D8FFF00D5A718 /* Pods.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = 95AEC45023DC633BFEBFE200DD4C81FC;
|
||||
remoteInfo = flutter_keyboard_visibility;
|
||||
};
|
||||
0B2156462C0D8FFF00D5A718 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 0B2156242C0D8FFF00D5A718 /* Pods.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = D0C5A85ABEF5ED03A54A449B87B69225;
|
||||
remoteInfo = fluttertoast;
|
||||
};
|
||||
0B2156482C0D8FFF00D5A718 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 0B2156242C0D8FFF00D5A718 /* Pods.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = 768975E636D1D2FB85622FB67DB04E5A;
|
||||
remoteInfo = image_picker_ios;
|
||||
};
|
||||
0B21564A2C0D8FFF00D5A718 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 0B2156242C0D8FFF00D5A718 /* Pods.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = F0C7EFBFF01CFAAB52BA74E6CB40CE2C;
|
||||
remoteInfo = "image_picker_ios-image_picker_ios_privacy";
|
||||
};
|
||||
0B21564C2C0D8FFF00D5A718 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 0B2156242C0D8FFF00D5A718 /* Pods.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = 723F1D07DBDF0EC2E0D163A4996FEE3D;
|
||||
remoteInfo = install_plugin;
|
||||
};
|
||||
0B21564E2C0D8FFF00D5A718 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 0B2156242C0D8FFF00D5A718 /* Pods.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = 6E45859F778E298A6DDE318300ACC4C5;
|
||||
remoteInfo = package_info;
|
||||
};
|
||||
0B2156502C0D8FFF00D5A718 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 0B2156242C0D8FFF00D5A718 /* Pods.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = AE157A33FEF959A214796BFF348717F6;
|
||||
remoteInfo = path_provider_foundation;
|
||||
};
|
||||
0B2156522C0D8FFF00D5A718 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 0B2156242C0D8FFF00D5A718 /* Pods.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = 3DBD4BADE27F8B91024E4B4B4DD75DB5;
|
||||
remoteInfo = "path_provider_foundation-path_provider_foundation_privacy";
|
||||
};
|
||||
0B2156542C0D8FFF00D5A718 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 0B2156242C0D8FFF00D5A718 /* Pods.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = C7AD28D5FB25A8DEDF61F78996932FA6;
|
||||
remoteInfo = permission_handler_apple;
|
||||
};
|
||||
0B2156562C0D8FFF00D5A718 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 0B2156242C0D8FFF00D5A718 /* Pods.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = 669E8F25E1897672BDB80B7EB784DA24;
|
||||
remoteInfo = "Pods-Runner";
|
||||
};
|
||||
0B2156582C0D8FFF00D5A718 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 0B2156242C0D8FFF00D5A718 /* Pods.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = 21B03CA622E690725A6626C088E1D09F;
|
||||
remoteInfo = ReachabilitySwift;
|
||||
};
|
||||
0B21565A2C0D8FFF00D5A718 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 0B2156242C0D8FFF00D5A718 /* Pods.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = DE8135CAE607F7824D08D08BDA5968B9;
|
||||
remoteInfo = rive_common;
|
||||
};
|
||||
0B21565C2C0D8FFF00D5A718 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 0B2156242C0D8FFF00D5A718 /* Pods.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = 93C6A45C6E4792269BE9BE0073839BF0;
|
||||
remoteInfo = shared_preferences_foundation;
|
||||
};
|
||||
0B21565E2C0D8FFF00D5A718 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 0B2156242C0D8FFF00D5A718 /* Pods.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = 0652FCE3FC19056983AABE058B3CC45B;
|
||||
remoteInfo = "shared_preferences_foundation-shared_preferences_foundation_privacy";
|
||||
};
|
||||
0B2156602C0D8FFF00D5A718 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 0B2156242C0D8FFF00D5A718 /* Pods.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = B799BFFEC5B11F90F501202080A57F37;
|
||||
remoteInfo = sqflite;
|
||||
};
|
||||
0B2156622C0D8FFF00D5A718 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 0B2156242C0D8FFF00D5A718 /* Pods.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = 58497E6EB70BA49D9A885C22D09B7A7C;
|
||||
remoteInfo = "sqflite-sqflite_darwin_privacy";
|
||||
};
|
||||
0B2156642C0D8FFF00D5A718 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 0B2156242C0D8FFF00D5A718 /* Pods.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = 55E0AFD333353D71ACC2207149E879D6;
|
||||
remoteInfo = Toast;
|
||||
};
|
||||
0B2156662C0D8FFF00D5A718 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 0B2156242C0D8FFF00D5A718 /* Pods.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = 7B7C06D35B3BC2BD649AAA1A489E49DA;
|
||||
remoteInfo = url_launcher_ios;
|
||||
};
|
||||
0B2156682C0D8FFF00D5A718 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 0B2156242C0D8FFF00D5A718 /* Pods.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = DBA6F34C072B134D3BE38983776DD1C3;
|
||||
remoteInfo = "url_launcher_ios-url_launcher_ios_privacy";
|
||||
};
|
||||
0B21566A2C0D8FFF00D5A718 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 0B2156242C0D8FFF00D5A718 /* Pods.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = 315E7D4955EFF42177E9BBC4382B527F;
|
||||
remoteInfo = wakelock;
|
||||
};
|
||||
0B21566C2C0D8FFF00D5A718 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 0B2156242C0D8FFF00D5A718 /* Pods.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = 7409A9316D1EEFAC7B383BE8CEC1BE03;
|
||||
remoteInfo = webview_flutter_wkwebview;
|
||||
};
|
||||
0B21566E2C0D8FFF00D5A718 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 0B2156242C0D8FFF00D5A718 /* Pods.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = 163A707D53693953E4DC7E0DE4C912A4;
|
||||
remoteInfo = "webview_flutter_wkwebview-webview_flutter_wkwebview_privacy";
|
||||
};
|
||||
/* End PBXContainerItemProxy section */
|
||||
|
||||
/* Begin PBXCopyFilesBuildPhase section */
|
||||
9705A1C41CF9048500538489 /* Embed Frameworks */ = {
|
||||
isa = PBXCopyFilesBuildPhase;
|
||||
|
|
@ -30,6 +201,7 @@
|
|||
/* End PBXCopyFilesBuildPhase section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
0B2156242C0D8FFF00D5A718 /* Pods.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = Pods.xcodeproj; path = Pods/Pods.xcodeproj; sourceTree = "<group>"; };
|
||||
0BD0304F2994F44800EB7527 /* Launch Screen.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = "Launch Screen.storyboard"; sourceTree = "<group>"; };
|
||||
1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; };
|
||||
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; };
|
||||
|
|
@ -64,11 +236,43 @@
|
|||
050DAC6E1AD50AF47A1F4114 /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
0B2156242C0D8FFF00D5A718 /* Pods.xcodeproj */,
|
||||
9AE64B664D96A59005B338D3 /* Pods_Runner.framework */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
0B2156252C0D8FFF00D5A718 /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
0B2156412C0D8FFF00D5A718 /* app_installer */,
|
||||
0B2156432C0D8FFF00D5A718 /* connectivity_plus */,
|
||||
0B2156452C0D8FFF00D5A718 /* flutter_keyboard_visibility */,
|
||||
0B2156472C0D8FFF00D5A718 /* fluttertoast */,
|
||||
0B2156492C0D8FFF00D5A718 /* image_picker_ios */,
|
||||
0B21564B2C0D8FFF00D5A718 /* image_picker_ios-image_picker_ios_privacy */,
|
||||
0B21564D2C0D8FFF00D5A718 /* install_plugin */,
|
||||
0B21564F2C0D8FFF00D5A718 /* package_info */,
|
||||
0B2156512C0D8FFF00D5A718 /* path_provider_foundation */,
|
||||
0B2156532C0D8FFF00D5A718 /* path_provider_foundation-path_provider_foundation_privacy */,
|
||||
0B2156552C0D8FFF00D5A718 /* permission_handler_apple */,
|
||||
0B2156572C0D8FFF00D5A718 /* Pods-Runner */,
|
||||
0B2156592C0D8FFF00D5A718 /* ReachabilitySwift */,
|
||||
0B21565B2C0D8FFF00D5A718 /* rive_common */,
|
||||
0B21565D2C0D8FFF00D5A718 /* shared_preferences_foundation */,
|
||||
0B21565F2C0D8FFF00D5A718 /* shared_preferences_foundation-shared_preferences_foundation_privacy */,
|
||||
0B2156612C0D8FFF00D5A718 /* sqflite */,
|
||||
0B2156632C0D8FFF00D5A718 /* sqflite-sqflite_darwin_privacy */,
|
||||
0B2156652C0D8FFF00D5A718 /* Toast */,
|
||||
0B2156672C0D8FFF00D5A718 /* url_launcher_ios */,
|
||||
0B2156692C0D8FFF00D5A718 /* url_launcher_ios-url_launcher_ios_privacy */,
|
||||
0B21566B2C0D8FFF00D5A718 /* wakelock */,
|
||||
0B21566D2C0D8FFF00D5A718 /* webview_flutter_wkwebview */,
|
||||
0B21566F2C0D8FFF00D5A718 /* webview_flutter_wkwebview-webview_flutter_wkwebview_privacy */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
9740EEB11CF90186004384FC /* Flutter */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
|
|
@ -175,6 +379,12 @@
|
|||
mainGroup = 97C146E51CF9000F007C117D;
|
||||
productRefGroup = 97C146EF1CF9000F007C117D /* Products */;
|
||||
projectDirPath = "";
|
||||
projectReferences = (
|
||||
{
|
||||
ProductGroup = 0B2156252C0D8FFF00D5A718 /* Products */;
|
||||
ProjectRef = 0B2156242C0D8FFF00D5A718 /* Pods.xcodeproj */;
|
||||
},
|
||||
);
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
97C146ED1CF9000F007C117D /* Runner */,
|
||||
|
|
@ -182,6 +392,201 @@
|
|||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXReferenceProxy section */
|
||||
0B2156412C0D8FFF00D5A718 /* app_installer */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = wrapper.framework;
|
||||
name = app_installer;
|
||||
path = app_installer.framework;
|
||||
remoteRef = 0B2156402C0D8FFF00D5A718 /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
0B2156432C0D8FFF00D5A718 /* connectivity_plus */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = wrapper.framework;
|
||||
name = connectivity_plus;
|
||||
path = connectivity_plus.framework;
|
||||
remoteRef = 0B2156422C0D8FFF00D5A718 /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
0B2156452C0D8FFF00D5A718 /* flutter_keyboard_visibility */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = wrapper.framework;
|
||||
name = flutter_keyboard_visibility;
|
||||
path = flutter_keyboard_visibility.framework;
|
||||
remoteRef = 0B2156442C0D8FFF00D5A718 /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
0B2156472C0D8FFF00D5A718 /* fluttertoast */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = wrapper.framework;
|
||||
name = fluttertoast;
|
||||
path = fluttertoast.framework;
|
||||
remoteRef = 0B2156462C0D8FFF00D5A718 /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
0B2156492C0D8FFF00D5A718 /* image_picker_ios */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = wrapper.framework;
|
||||
name = image_picker_ios;
|
||||
path = image_picker_ios.framework;
|
||||
remoteRef = 0B2156482C0D8FFF00D5A718 /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
0B21564B2C0D8FFF00D5A718 /* image_picker_ios-image_picker_ios_privacy */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = wrapper.cfbundle;
|
||||
name = "image_picker_ios-image_picker_ios_privacy";
|
||||
path = image_picker_ios_privacy.bundle;
|
||||
remoteRef = 0B21564A2C0D8FFF00D5A718 /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
0B21564D2C0D8FFF00D5A718 /* install_plugin */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = wrapper.framework;
|
||||
name = install_plugin;
|
||||
path = install_plugin.framework;
|
||||
remoteRef = 0B21564C2C0D8FFF00D5A718 /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
0B21564F2C0D8FFF00D5A718 /* package_info */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = wrapper.framework;
|
||||
name = package_info;
|
||||
path = package_info.framework;
|
||||
remoteRef = 0B21564E2C0D8FFF00D5A718 /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
0B2156512C0D8FFF00D5A718 /* path_provider_foundation */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = wrapper.framework;
|
||||
name = path_provider_foundation;
|
||||
path = path_provider_foundation.framework;
|
||||
remoteRef = 0B2156502C0D8FFF00D5A718 /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
0B2156532C0D8FFF00D5A718 /* path_provider_foundation-path_provider_foundation_privacy */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = wrapper.cfbundle;
|
||||
name = "path_provider_foundation-path_provider_foundation_privacy";
|
||||
path = path_provider_foundation_privacy.bundle;
|
||||
remoteRef = 0B2156522C0D8FFF00D5A718 /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
0B2156552C0D8FFF00D5A718 /* permission_handler_apple */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = wrapper.framework;
|
||||
name = permission_handler_apple;
|
||||
path = permission_handler_apple.framework;
|
||||
remoteRef = 0B2156542C0D8FFF00D5A718 /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
0B2156572C0D8FFF00D5A718 /* Pods-Runner */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = wrapper.framework;
|
||||
name = "Pods-Runner";
|
||||
path = Pods_Runner.framework;
|
||||
remoteRef = 0B2156562C0D8FFF00D5A718 /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
0B2156592C0D8FFF00D5A718 /* ReachabilitySwift */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = wrapper.framework;
|
||||
name = ReachabilitySwift;
|
||||
path = Reachability.framework;
|
||||
remoteRef = 0B2156582C0D8FFF00D5A718 /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
0B21565B2C0D8FFF00D5A718 /* rive_common */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = wrapper.framework;
|
||||
name = rive_common;
|
||||
path = rive_common.framework;
|
||||
remoteRef = 0B21565A2C0D8FFF00D5A718 /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
0B21565D2C0D8FFF00D5A718 /* shared_preferences_foundation */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = wrapper.framework;
|
||||
name = shared_preferences_foundation;
|
||||
path = shared_preferences_foundation.framework;
|
||||
remoteRef = 0B21565C2C0D8FFF00D5A718 /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
0B21565F2C0D8FFF00D5A718 /* shared_preferences_foundation-shared_preferences_foundation_privacy */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = wrapper.cfbundle;
|
||||
name = "shared_preferences_foundation-shared_preferences_foundation_privacy";
|
||||
path = shared_preferences_foundation_privacy.bundle;
|
||||
remoteRef = 0B21565E2C0D8FFF00D5A718 /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
0B2156612C0D8FFF00D5A718 /* sqflite */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = wrapper.framework;
|
||||
name = sqflite;
|
||||
path = sqflite.framework;
|
||||
remoteRef = 0B2156602C0D8FFF00D5A718 /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
0B2156632C0D8FFF00D5A718 /* sqflite-sqflite_darwin_privacy */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = wrapper.cfbundle;
|
||||
name = "sqflite-sqflite_darwin_privacy";
|
||||
path = sqflite_darwin_privacy.bundle;
|
||||
remoteRef = 0B2156622C0D8FFF00D5A718 /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
0B2156652C0D8FFF00D5A718 /* Toast */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = wrapper.framework;
|
||||
name = Toast;
|
||||
path = Toast.framework;
|
||||
remoteRef = 0B2156642C0D8FFF00D5A718 /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
0B2156672C0D8FFF00D5A718 /* url_launcher_ios */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = wrapper.framework;
|
||||
name = url_launcher_ios;
|
||||
path = url_launcher_ios.framework;
|
||||
remoteRef = 0B2156662C0D8FFF00D5A718 /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
0B2156692C0D8FFF00D5A718 /* url_launcher_ios-url_launcher_ios_privacy */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = wrapper.cfbundle;
|
||||
name = "url_launcher_ios-url_launcher_ios_privacy";
|
||||
path = url_launcher_ios_privacy.bundle;
|
||||
remoteRef = 0B2156682C0D8FFF00D5A718 /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
0B21566B2C0D8FFF00D5A718 /* wakelock */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = wrapper.framework;
|
||||
name = wakelock;
|
||||
path = wakelock.framework;
|
||||
remoteRef = 0B21566A2C0D8FFF00D5A718 /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
0B21566D2C0D8FFF00D5A718 /* webview_flutter_wkwebview */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = wrapper.framework;
|
||||
name = webview_flutter_wkwebview;
|
||||
path = webview_flutter_wkwebview.framework;
|
||||
remoteRef = 0B21566C2C0D8FFF00D5A718 /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
0B21566F2C0D8FFF00D5A718 /* webview_flutter_wkwebview-webview_flutter_wkwebview_privacy */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = wrapper.cfbundle;
|
||||
name = "webview_flutter_wkwebview-webview_flutter_wkwebview_privacy";
|
||||
path = webview_flutter_wkwebview_privacy.bundle;
|
||||
remoteRef = 0B21566E2C0D8FFF00D5A718 /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
/* End PBXReferenceProxy section */
|
||||
|
||||
/* Begin PBXResourcesBuildPhase section */
|
||||
97C146EC1CF9000F007C117D /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
|
|
@ -352,7 +757,7 @@
|
|||
ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = YES;
|
||||
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = "";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CURRENT_PROJECT_VERSION = 24;
|
||||
CURRENT_PROJECT_VERSION = 25;
|
||||
DEVELOPMENT_TEAM = CYDU583KN6;
|
||||
ENABLE_BITCODE = NO;
|
||||
INFOPLIST_FILE = Runner/Info.plist;
|
||||
|
|
@ -360,7 +765,7 @@
|
|||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 1.0.107;
|
||||
MARKETING_VERSION = 1.0.108;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.example.markingApp;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
|
||||
|
|
@ -490,7 +895,7 @@
|
|||
ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = YES;
|
||||
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = "";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CURRENT_PROJECT_VERSION = 24;
|
||||
CURRENT_PROJECT_VERSION = 25;
|
||||
DEVELOPMENT_TEAM = CYDU583KN6;
|
||||
ENABLE_BITCODE = NO;
|
||||
INFOPLIST_FILE = Runner/Info.plist;
|
||||
|
|
@ -498,7 +903,7 @@
|
|||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 1.0.107;
|
||||
MARKETING_VERSION = 1.0.108;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.example.markingApp;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
|
||||
|
|
@ -520,7 +925,7 @@
|
|||
ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = YES;
|
||||
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = "";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CURRENT_PROJECT_VERSION = 24;
|
||||
CURRENT_PROJECT_VERSION = 25;
|
||||
DEVELOPMENT_TEAM = CYDU583KN6;
|
||||
ENABLE_BITCODE = NO;
|
||||
INFOPLIST_FILE = Runner/Info.plist;
|
||||
|
|
@ -528,7 +933,7 @@
|
|||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 1.0.107;
|
||||
MARKETING_VERSION = 1.0.108;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.example.markingApp;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
|
||||
|
|
|
|||
|
|
@ -6,14 +6,12 @@
|
|||
* @FilePath: \marking_app\lib\common\model\UserLogin.dart
|
||||
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
|
||||
*/
|
||||
import 'package:json_annotation/json_annotation.dart';
|
||||
|
||||
import 'package:json_annotation/json_annotation.dart';
|
||||
|
||||
part 'user_login.g.dart';
|
||||
|
||||
|
||||
@JsonSerializable(checked: true)
|
||||
class UserLogin extends Object {
|
||||
|
||||
class UserLogin extends Object {
|
||||
@JsonKey(name: 'access_token')
|
||||
String accessToken;
|
||||
|
||||
|
|
@ -23,10 +21,28 @@ part 'user_login.g.dart';
|
|||
@JsonKey(name: 'token_type')
|
||||
String tokenType;
|
||||
|
||||
UserLogin(this.accessToken,this.expiresIn,this.tokenType,);
|
||||
UserLogin(
|
||||
this.accessToken,
|
||||
this.expiresIn,
|
||||
this.tokenType,
|
||||
);
|
||||
|
||||
factory UserLogin.fromJson(Map<String, dynamic> srcJson) => _$UserLoginFromJson(srcJson);
|
||||
|
||||
Map<String, dynamic> toJson() => _$UserLoginToJson(this);
|
||||
}
|
||||
|
||||
}
|
||||
@JsonSerializable()
|
||||
class UseLoginSchool extends Object {
|
||||
@JsonKey(name: 'schoolId')
|
||||
int schoolId;
|
||||
|
||||
@JsonKey(name: 'schoolName')
|
||||
String schoolName;
|
||||
|
||||
UseLoginSchool(this.schoolId, this.schoolName);
|
||||
|
||||
factory UseLoginSchool.fromJson(Map<String, dynamic> srcJson) => _$UseLoginSchoolFromJson(srcJson);
|
||||
|
||||
Map<String, dynamic> toJson() => _$UseLoginSchoolToJson(this);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,24 +6,24 @@
|
|||
* @FilePath: \marking_app\lib\common\model\user\user_login_params.dart
|
||||
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
|
||||
*/
|
||||
import 'package:json_annotation/json_annotation.dart';
|
||||
|
||||
import 'package:json_annotation/json_annotation.dart';
|
||||
|
||||
part 'user_login_params.g.dart';
|
||||
|
||||
|
||||
@JsonSerializable()
|
||||
class UserLoginParams extends Object {
|
||||
|
||||
class UserLoginParams extends Object {
|
||||
@JsonKey(name: 'loginName')
|
||||
String loginName;
|
||||
|
||||
@JsonKey(name: 'password')
|
||||
String password;
|
||||
|
||||
UserLoginParams(this.loginName,this.password,);
|
||||
@JsonKey(name: 'schoolId')
|
||||
int? schoolId;
|
||||
|
||||
UserLoginParams(this.loginName, this.password, [this.schoolId]);
|
||||
|
||||
factory UserLoginParams.fromJson(Map<String, dynamic> srcJson) => _$UserLoginParamsFromJson(srcJson);
|
||||
|
||||
Map<String, dynamic> toJson() => _$UserLoginParamsToJson(this);
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@
|
|||
|
||||
import 'dart:convert';
|
||||
import 'dart:io';
|
||||
import 'package:collection/collection.dart';
|
||||
import 'package:dio/dio.dart';
|
||||
|
||||
import 'package:dio/adapter.dart';
|
||||
|
|
@ -16,7 +17,9 @@ import 'package:flutter/cupertino.dart';
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_easyloading/flutter_easyloading.dart';
|
||||
import 'package:flutter_hooks/flutter_hooks.dart';
|
||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||
import 'package:functional_widget_annotation/functional_widget_annotation.dart';
|
||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||
import 'package:marking_app/common/config/request_config.dart';
|
||||
import 'package:marking_app/common/mixin/common.dart';
|
||||
|
|
@ -32,6 +35,8 @@ import 'package:marking_app/provider/user_provider.dart';
|
|||
import 'package:marking_app/routes/RouterManager.dart';
|
||||
import 'package:marking_app/utils/sys_protocol.dart';
|
||||
|
||||
part 'index.g.dart';
|
||||
|
||||
class TheLogin extends StatefulHookConsumerWidget {
|
||||
const TheLogin({Key? key}) : super(key: key);
|
||||
|
||||
|
|
@ -55,6 +60,9 @@ class _TheLoginState extends ConsumerState<TheLogin> with CommonMixin {
|
|||
//文本输入框控制器
|
||||
late final TextEditingController _userNameController;
|
||||
late final TextEditingController _passwordController;
|
||||
int? lastTimeSchoolId; // 上次登录保留的学校ID
|
||||
int? schoolId;
|
||||
List<UseLoginSchool> schools = []; // 学校数据
|
||||
|
||||
late final FocusNode _pwdFocus; // 密码
|
||||
late final FocusNode _theFocus;
|
||||
|
|
@ -81,13 +89,7 @@ class _TheLoginState extends ConsumerState<TheLogin> with CommonMixin {
|
|||
});
|
||||
getShowRegister();
|
||||
super.initState();
|
||||
dio = Dio(
|
||||
BaseOptions(
|
||||
contentType: "application/json",
|
||||
connectTimeout: 8000,
|
||||
receiveTimeout: 8000,
|
||||
),
|
||||
);
|
||||
dio = Dio(BaseOptions(contentType: "application/json", connectTimeout: 8000, receiveTimeout: 8000));
|
||||
dio.interceptors.add(LogInterceptor(responseBody: true, requestBody: true)); //添加日志
|
||||
|
||||
setHttpsPEM();
|
||||
|
|
@ -103,27 +105,60 @@ class _TheLoginState extends ConsumerState<TheLogin> with CommonMixin {
|
|||
setState(() {
|
||||
_passwordController.text = valMap['pwd'];
|
||||
_userNameController.text = valMap['account'];
|
||||
lastTimeSchoolId = int.tryParse(valMap['schoolId']);
|
||||
|
||||
print('原始学校ID $schoolId');
|
||||
keepPwd = true;
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
void getShowRegister() async {
|
||||
RestClient client = await getClientLogin();
|
||||
BaseStructureResult<dynamic> resultData = await client.showRegister();
|
||||
if (resultData.success) {
|
||||
setState(() {
|
||||
showRegister = resultData.data;
|
||||
});
|
||||
try {
|
||||
var client = await getClient();
|
||||
BaseStructureResult<dynamic> resultData = await client.showRegister();
|
||||
if (resultData.success) setState(() => showRegister = resultData.data);
|
||||
} catch (e) {}
|
||||
}
|
||||
|
||||
// 获取用户学校数据
|
||||
void getSchoolData(String loginName) async {
|
||||
if (loginName.length != 0) {
|
||||
try {
|
||||
if (loginName == '18888888888') {
|
||||
schoolId = 10079;
|
||||
return;
|
||||
}
|
||||
var _client = await getClient();
|
||||
var res = await _client.toLoginGetSchools(loginName);
|
||||
if (res.success) {
|
||||
schools = res.data ?? [];
|
||||
UseLoginSchool? schoolElement;
|
||||
if (lastTimeSchoolId != null) schoolElement = schools.firstWhereOrNull((e) => e.schoolId == lastTimeSchoolId);
|
||||
if (schoolElement != null)
|
||||
schoolId = schoolElement.schoolId;
|
||||
else
|
||||
schoolId = schools[0].schoolId;
|
||||
setState(() {});
|
||||
return;
|
||||
}
|
||||
} catch (e) {}
|
||||
}
|
||||
if (schools.isNotEmpty || schoolId != null) {
|
||||
schools = [];
|
||||
schoolId = null;
|
||||
setState(() {});
|
||||
}
|
||||
}
|
||||
|
||||
void userNameListener() {
|
||||
String userName = _userNameController.text;
|
||||
String userName = _userNameController.text.trim();
|
||||
int useNameLength = userName.length;
|
||||
bool hasNameValNew = useNameLength > 0;
|
||||
if (!hasNameValNew) lastTimeSchoolId = null;
|
||||
if (hasNameValNew != hasNameVal) toUpState(setState, () => hasNameVal = hasNameValNew, mounted);
|
||||
const isProd = bool.fromEnvironment('dart.vm.product');
|
||||
getSchoolData(userName); // 获取用户学校数据
|
||||
if (!isProd && useNameLength == 11) {
|
||||
_passwordController.text = userName.substring(useNameLength - 6);
|
||||
}
|
||||
|
|
@ -262,9 +297,11 @@ class _TheLoginState extends ConsumerState<TheLogin> with CommonMixin {
|
|||
labelStyle: TextStyle(fontSize: 16.sp, color: const Color.fromRGBO(148, 163, 182, 1)),
|
||||
),
|
||||
),
|
||||
SizedBox(
|
||||
height: 12.h,
|
||||
),
|
||||
$SchoolDataDropDown(schools, schoolId, (int? id) {
|
||||
schoolId = id;
|
||||
lastTimeSchoolId = null;
|
||||
}),
|
||||
SizedBox(height: 12.h),
|
||||
Row(
|
||||
children: [
|
||||
Container(
|
||||
|
|
@ -289,13 +326,7 @@ class _TheLoginState extends ConsumerState<TheLogin> with CommonMixin {
|
|||
FocusScope.of(context).requestFocus(_theFocus);
|
||||
setState(() => keepPwd = !keepPwd);
|
||||
},
|
||||
child: Text(
|
||||
'记住密码',
|
||||
style: TextStyle(
|
||||
fontSize: 14.sp,
|
||||
color: const Color.fromRGBO(148, 163, 182, 1),
|
||||
),
|
||||
),
|
||||
child: Text('记住密码', style: TextStyle(fontSize: 14.sp, color: const Color.fromRGBO(148, 163, 182, 1))),
|
||||
),
|
||||
Spacer(),
|
||||
if (showRegister == true)
|
||||
|
|
@ -303,10 +334,7 @@ class _TheLoginState extends ConsumerState<TheLogin> with CommonMixin {
|
|||
onTap: () {
|
||||
RouterManager.router.navigateTo(context, RouterManager.registerPath);
|
||||
},
|
||||
child: Text(
|
||||
'注册',
|
||||
style: TextStyle(fontSize: 14.sp, color: const Color.fromRGBO(148, 163, 182, 1)),
|
||||
)),
|
||||
child: Text('注册', style: TextStyle(fontSize: 14.sp, color: const Color.fromRGBO(148, 163, 182, 1)))),
|
||||
],
|
||||
),
|
||||
InkWell(
|
||||
|
|
@ -323,9 +351,7 @@ class _TheLoginState extends ConsumerState<TheLogin> with CommonMixin {
|
|||
spreadRadius: 0.5, //阴影扩散程度
|
||||
)
|
||||
],
|
||||
borderRadius: BorderRadius.all(
|
||||
Radius.circular(8.w),
|
||||
),
|
||||
borderRadius: BorderRadius.all(Radius.circular(8.w)),
|
||||
),
|
||||
alignment: Alignment.center,
|
||||
width: double.infinity,
|
||||
|
|
@ -409,14 +435,13 @@ class _TheLoginState extends ConsumerState<TheLogin> with CommonMixin {
|
|||
void toLogin() async {
|
||||
if (!canLogin) return;
|
||||
|
||||
setState(() => canLogin = false);
|
||||
|
||||
void toMsg(msg) {
|
||||
ToastUtils.showError(msg);
|
||||
Future.delayed(Duration.zero, () => ToastUtils.showError(msg));
|
||||
setState(() => canLogin = true);
|
||||
}
|
||||
|
||||
try {
|
||||
setState(() => canLogin = false);
|
||||
FocusScope.of(context).requestFocus(_theFocus);
|
||||
if (!readAgreement) {
|
||||
var resFlag = await showDialog<bool>(
|
||||
|
|
@ -459,12 +484,13 @@ class _TheLoginState extends ConsumerState<TheLogin> with CommonMixin {
|
|||
if (userName == '') return toMsg('请填写用户账号');
|
||||
if (userPwd == '') return toMsg('请填写密码再试');
|
||||
if (!readAgreement) return toMsg('请勾选我已阅读用户协议和隐私协议');
|
||||
if (schoolId == null) return toMsg('请选择所在学校');
|
||||
|
||||
String userPwdMd5 = CommonUtils.generateMD5(userPwd);
|
||||
print('userPwdMd5=$userPwdMd5');
|
||||
EasyLoading.show(status: 'loading...');
|
||||
|
||||
BaseStructureResult<dynamic> resultData = await client.toLogin(UserLoginParams(userName, userPwdMd5));
|
||||
BaseStructureResult<dynamic> resultData = await client.toLogin(UserLoginParams(userName, userPwdMd5, schoolId!));
|
||||
UserLogin? userData = resultData.code == 200 && resultData.data != null ? UserLogin.fromJson(resultData.data) : null;
|
||||
if (resultData.code != 200 || userData?.accessToken == null || userData?.accessToken == '') {
|
||||
return toMsg(resultData.message ?? '登录失败,请重试');
|
||||
|
|
@ -482,7 +508,7 @@ class _TheLoginState extends ConsumerState<TheLogin> with CommonMixin {
|
|||
fastData.setUser(userRes.data!).then((value) {
|
||||
// 记住密码
|
||||
if (keepPwd) {
|
||||
fastData.setUserPwdAndAccount({'pwd': userPwd, 'account': userName});
|
||||
fastData.setUserPwdAndAccount({'pwd': userPwd, 'account': userName, 'schoolId': schoolId.toString()});
|
||||
}
|
||||
// 更新
|
||||
ref.read(userProvider.notifier).initUserInfo();
|
||||
|
|
@ -525,3 +551,41 @@ class _TheLoginState extends ConsumerState<TheLogin> with CommonMixin {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
@hwidget
|
||||
Widget $schoolDataDropDown(BuildContext context, List<UseLoginSchool> schools, int? schoolId, void Function(int? id) call) {
|
||||
var useSchool = useState(schools);
|
||||
var useSchoolId = useState(schoolId);
|
||||
|
||||
useValueChanged<List<UseLoginSchool>, void>(schools, (_, __) => useSchool.value = schools);
|
||||
useValueChanged<int?, void>(schoolId, (_, __) => useSchoolId.value = schoolId);
|
||||
|
||||
if (useSchool.value.isEmpty) return SizedBox();
|
||||
return Padding(
|
||||
padding: EdgeInsets.only(top: 24.h),
|
||||
child: Column(
|
||||
children: [
|
||||
Container(alignment: Alignment.topLeft, child: quickText('登录学校', size: 12.sp, color: const Color.fromRGBO(148, 163, 182, 1))),
|
||||
Container(
|
||||
height: 40.h,
|
||||
width: double.infinity,
|
||||
child: DropdownButton<int>(
|
||||
value: useSchoolId.value,
|
||||
iconSize: 18.r,
|
||||
elevation: 16,
|
||||
isExpanded: true,
|
||||
padding: EdgeInsets.only(right: 4.w),
|
||||
icon: const Icon(Icons.keyboard_arrow_down_rounded),
|
||||
style: TextStyle(color: Colors.deepPurple),
|
||||
underline: Container(height: 0.6.h, color: const Color.fromRGBO(80, 87, 103, 1)),
|
||||
onChanged: (int? id) {
|
||||
call(id);
|
||||
useSchoolId.value = schoolId;
|
||||
},
|
||||
items: useSchool.value.map((e) => DropdownMenuItem<int>(value: e.schoolId, child: quickText(e.schoolName, size: 12.sp))).toList(),
|
||||
),
|
||||
)
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,8 +20,7 @@ class Register extends StatefulWidget {
|
|||
State<Register> createState() => _RegisterState();
|
||||
}
|
||||
|
||||
class _RegisterState extends State<Register> with CommonMixin{
|
||||
|
||||
class _RegisterState extends State<Register> with CommonMixin {
|
||||
late final FocusNode _theFocus;
|
||||
late final FocusNode _pwdFocus; // 密码
|
||||
//文本输入框控制器
|
||||
|
|
@ -33,7 +32,7 @@ class _RegisterState extends State<Register> with CommonMixin{
|
|||
bool canLogin = true;
|
||||
|
||||
@override
|
||||
void initState(){
|
||||
void initState() {
|
||||
super.initState();
|
||||
_userNameController = TextEditingController();
|
||||
_passwordController = TextEditingController();
|
||||
|
|
@ -50,7 +49,7 @@ class _RegisterState extends State<Register> with CommonMixin{
|
|||
_theFocus.dispose();
|
||||
}
|
||||
|
||||
void toRegister() async{
|
||||
void toRegister() async {
|
||||
if (!canLogin) return;
|
||||
setState(() => canLogin = false);
|
||||
void toMsg(msg) {
|
||||
|
|
@ -60,25 +59,29 @@ class _RegisterState extends State<Register> with CommonMixin{
|
|||
|
||||
FocusScope.of(context).requestFocus(_theFocus);
|
||||
|
||||
String userName = _userNameController.text.trim();
|
||||
String userPwd = _passwordController.text.trim();
|
||||
if (userName == '') return toMsg('请填写用户账号');
|
||||
if (userPwd == '') return toMsg('请填写密码');
|
||||
if (!readAgreement) return toMsg('请勾选我已阅读用户协议和隐私协议');
|
||||
try {
|
||||
String userName = _userNameController.text.trim();
|
||||
String userPwd = _passwordController.text.trim();
|
||||
if (userName == '') return toMsg('请填写用户账号');
|
||||
if (userPwd == '') return toMsg('请填写密码');
|
||||
if (!readAgreement) return toMsg('请勾选我已阅读用户协议和隐私协议');
|
||||
|
||||
String userPwdMd5 = CommonUtils.generateMD5(userPwd);
|
||||
print('注册userPwdMd5=$userPwdMd5');
|
||||
EasyLoading.show(status: 'loading...');
|
||||
RestClient client = await getClientLogin();
|
||||
BaseStructureResult<dynamic> resultData = await client.toRegister(UserLoginParams(userName, userPwdMd5));
|
||||
String userPwdMd5 = CommonUtils.generateMD5(userPwd);
|
||||
print('注册userPwdMd5=$userPwdMd5');
|
||||
EasyLoading.show(status: 'loading...');
|
||||
RestClient client = await getClientLogin();
|
||||
BaseStructureResult<dynamic> resultData = await client.toRegister(UserLoginParams(userName, userPwdMd5, 0));
|
||||
|
||||
if (resultData.code != 200) {
|
||||
return toMsg(resultData.message ?? '注册失败,请重试');
|
||||
if (resultData.code != 200) {
|
||||
return toMsg(resultData.message ?? '注册失败,请重试');
|
||||
}
|
||||
|
||||
ToastUtils.showSuccess('注册成功,请登录');
|
||||
// 跳转登录页
|
||||
RouterManager.router.navigateTo(context, RouterManager.loginPath);
|
||||
} finally {
|
||||
EasyLoading.dismiss();
|
||||
}
|
||||
EasyLoading.dismiss();
|
||||
ToastUtils.showSuccess('注册成功,请登录');
|
||||
// 跳转登录页
|
||||
RouterManager.router.navigateTo(context, RouterManager.loginPath);
|
||||
}
|
||||
|
||||
void _showPassword() {
|
||||
|
|
@ -232,10 +235,8 @@ class _RegisterState extends State<Register> with CommonMixin{
|
|||
checkColor: Colors.white,
|
||||
value: readAgreement,
|
||||
onChanged: (value) {
|
||||
FocusScope.of(context)
|
||||
.requestFocus(_pwdFocus);
|
||||
FocusScope.of(context)
|
||||
.requestFocus(_theFocus);
|
||||
FocusScope.of(context).requestFocus(_pwdFocus);
|
||||
FocusScope.of(context).requestFocus(_theFocus);
|
||||
setState(() {
|
||||
readAgreement = value ?? false;
|
||||
});
|
||||
|
|
@ -270,18 +271,15 @@ class _RegisterState extends State<Register> with CommonMixin{
|
|||
),
|
||||
]),
|
||||
)
|
||||
|
||||
|
||||
],
|
||||
),
|
||||
)),
|
||||
Positioned(
|
||||
top: MediaQuery.of(context).padding.top+20.r,
|
||||
top: MediaQuery.of(context).padding.top + 20.r,
|
||||
left: 20.r,
|
||||
child: InkWell(
|
||||
onTap: () => Navigator.pop(context),
|
||||
child: Icon(Icons.arrow_back_ios_new_rounded,
|
||||
color: Colors.white, size: 24.sp),
|
||||
child: Icon(Icons.arrow_back_ios_new_rounded, color: Colors.white, size: 24.sp),
|
||||
),
|
||||
),
|
||||
],
|
||||
|
|
|
|||
|
|
@ -63,6 +63,7 @@ import 'package:marking_app/common/model/review/review_page_params.dart';
|
|||
import 'package:marking_app/common/model/review/review_tab.dart';
|
||||
import 'package:marking_app/common/model/sys/system_version.dart';
|
||||
import 'package:marking_app/common/model/user/user_info.dart';
|
||||
import 'package:marking_app/common/model/user/user_login.dart';
|
||||
import 'package:retrofit/retrofit.dart' as the_retrofit;
|
||||
import 'package:marking_app/common/model/user/user_login_params.dart';
|
||||
|
||||
|
|
@ -81,6 +82,10 @@ abstract class RestClient {
|
|||
@the_retrofit.POST("/auth/login/exam-marking/user")
|
||||
Future<BaseStructureResult<dynamic>> toLogin(@the_retrofit.Body() UserLoginParams params);
|
||||
|
||||
// 登录获取用户学校数据
|
||||
@the_retrofit.GET("/auth/login/exam-marking/user-schools")
|
||||
Future<BaseStructureResult<List<UseLoginSchool>>> toLoginGetSchools(@the_retrofit.Query("loginName") String loginName);
|
||||
|
||||
//获取图片上传秘钥
|
||||
@the_retrofit.GET("/api/img-svr/minio-cfg")
|
||||
Future<BaseStructureResult<UploadImgSecretKey>> getImageUploadKey();
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
# Read more about iOS versioning at
|
||||
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
|
||||
version: 1.0.107+2
|
||||
version: 1.0.108+3
|
||||
|
||||
environment:
|
||||
sdk: ">=2.17.1 <3.0.0"
|
||||
|
|
@ -104,7 +104,7 @@ dependencies:
|
|||
# multi_select_flutter: ^4.1.3
|
||||
dropdown_button2: ^2.3.9
|
||||
# copy
|
||||
clipboard: ^0.1.3
|
||||
# clipboard: ^0.1.3
|
||||
image: ^4.1.3
|
||||
awesome_dialog: ^3.1.0
|
||||
badges: ^3.1.2
|
||||
|
|
|
|||
Loading…
Reference in New Issue