Compare commits
5 Commits
22d3065892
...
ff3243695f
| Author | SHA1 | Date |
|---|---|---|
|
|
ff3243695f | |
|
|
9518308e80 | |
|
|
472e58cc21 | |
|
|
92878d0a16 | |
|
|
944d302bd7 |
|
|
@ -5,7 +5,6 @@
|
|||
android:icon="@mipmap/ic_launcher">
|
||||
<activity
|
||||
android:name=".MainActivity"
|
||||
android:screenOrientation="portrait"
|
||||
android:exported="true"
|
||||
android:launchMode="singleTop"
|
||||
android:taskAffinity=""
|
||||
|
|
@ -18,9 +17,15 @@
|
|||
while the Flutter UI initializes. After that, this theme continues
|
||||
to determine the Window background behind the Flutter UI. -->
|
||||
<meta-data
|
||||
android:name="io.flutter.embedding.android.NormalTheme"
|
||||
android:resource="@style/NormalTheme"
|
||||
/>
|
||||
android:name="io.flutter.embedding.android.NormalTheme"
|
||||
android:resource="@style/NormalTheme"/>
|
||||
<!-- <meta-data
|
||||
android:name="io.flutter.app.android.SplashScreenUntilFirstFrame"
|
||||
android:value="true" />
|
||||
<meta-data
|
||||
android:name="io.flutter.embedding.android.SplashScreenDrawable"
|
||||
android:resource="@drawable/background"
|
||||
/>-->
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN"/>
|
||||
<category android:name="android.intent.category.LAUNCHER"/>
|
||||
|
|
@ -30,39 +35,53 @@
|
|||
This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
|
||||
<meta-data
|
||||
android:name="flutterEmbedding"
|
||||
android:value="2" />
|
||||
|
||||
android:value="2"/>
|
||||
<!-- Provider -->
|
||||
<provider
|
||||
android:name="androidx.core.content.FileProvider"
|
||||
android:authorities="${applicationId}.fileProvider"
|
||||
android:exported="false"
|
||||
android:grantUriPermissions="true">
|
||||
<meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_paths" />
|
||||
</provider>
|
||||
<meta-data
|
||||
android:name="android.support.FILE_PROVIDER_PATHS"
|
||||
android:resource="@xml/file_paths"/>
|
||||
</provider>
|
||||
</application>
|
||||
<!-- 访问电话状态 -->
|
||||
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
|
||||
<uses-permission
|
||||
android:name="android.permission.READ_PHONE_STATE"/>
|
||||
<!-- 允许全部网络访问 -->
|
||||
<uses-permission android:name="android.permission.INTERNET" />
|
||||
<uses-permission
|
||||
android:name="android.permission.INTERNET"/>
|
||||
<!-- 获取网络信息状态 -->
|
||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
||||
<uses-permission
|
||||
android:name="android.permission.ACCESS_NETWORK_STATE"/>
|
||||
<!-- 获取当前WiFi接入的状态以及WLAN热点的信息 -->
|
||||
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
|
||||
<uses-permission
|
||||
android:name="android.permission.ACCESS_WIFI_STATE"/>
|
||||
<!-- 获取当前设备存储权限 -->
|
||||
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
|
||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
||||
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
|
||||
<uses-permission android:name="android.permission.ACTION_MANAGE_UNKNOWN_APP_SOURCES"/>
|
||||
<uses-permission
|
||||
android:name="android.permission.READ_EXTERNAL_STORAGE"/>
|
||||
<uses-permission
|
||||
android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
|
||||
<uses-permission
|
||||
android:name="android.permission.MANAGE_EXTERNAL_STORAGE"/>
|
||||
<uses-permission
|
||||
android:name="android.permission.ACTION_MANAGE_UNKNOWN_APP_SOURCES"/>
|
||||
<!-- 这个权限用于app安装 -->
|
||||
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
|
||||
<uses-permission
|
||||
android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>
|
||||
<!-- 屏幕常亮权限 -->
|
||||
<uses-permission android:name="android.permission.WAKE_LOCK" />
|
||||
<uses-permission android:name="android.permission.CAMERA"/>
|
||||
<uses-permission
|
||||
android:name="android.permission.WAKE_LOCK"/>
|
||||
<uses-permission
|
||||
android:name="android.permission.CAMERA"/>
|
||||
<!-- Permissions options for the `access notification policy` group -->
|
||||
<uses-permission android:name="android.permission.ACCESS_NOTIFICATION_POLICY"/>
|
||||
<uses-permission
|
||||
android:name="android.permission.ACCESS_NOTIFICATION_POLICY"/>
|
||||
<!-- Permissions options for the `notification` group -->
|
||||
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
|
||||
<uses-permission
|
||||
android:name="android.permission.POST_NOTIFICATIONS"/>
|
||||
<!-- Required to query activities that can process text, see:
|
||||
https://developer.android.com/training/package-visibility and
|
||||
https://developer.android.com/reference/android/content/Intent#ACTION_PROCESS_TEXT.
|
||||
|
|
@ -70,8 +89,10 @@
|
|||
In particular, this is used by the Flutter engine in io.flutter.plugin.text.ProcessTextPlugin. -->
|
||||
<queries>
|
||||
<intent>
|
||||
<action android:name="android.intent.action.PROCESS_TEXT"/>
|
||||
<data android:mimeType="text/plain"/>
|
||||
<action
|
||||
android:name="android.intent.action.PROCESS_TEXT"/>
|
||||
<data
|
||||
android:mimeType="text/plain"/>
|
||||
</intent>
|
||||
</queries>
|
||||
</manifest>
|
||||
</manifest>
|
||||
|
After Width: | Height: | Size: 43 KiB |
|
After Width: | Height: | Size: 19 KiB |
|
|
@ -0,0 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item>
|
||||
<bitmap android:gravity="fill" android:src="@drawable/background"/>
|
||||
</item>
|
||||
</layer-list>
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item>
|
||||
<bitmap android:gravity="fill" android:src="@drawable/background"/>
|
||||
</item>
|
||||
</layer-list>
|
||||
|
After Width: | Height: | Size: 305 KiB |
|
|
@ -1,12 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Modify this file to customize your launch splash screen -->
|
||||
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:drawable="?android:colorBackground" />
|
||||
|
||||
<!-- You can insert your own image assets here -->
|
||||
<!-- <item>
|
||||
<bitmap
|
||||
android:gravity="center"
|
||||
android:src="@mipmap/launch_image" />
|
||||
</item> -->
|
||||
<item>
|
||||
<bitmap android:gravity="fill" android:src="@drawable/background"/>
|
||||
</item>
|
||||
</layer-list>
|
||||
|
|
|
|||
|
After Width: | Height: | Size: 74 KiB |
|
After Width: | Height: | Size: 165 KiB |
|
After Width: | Height: | Size: 272 KiB |
|
After Width: | Height: | Size: 305 KiB |
|
|
@ -1,12 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Modify this file to customize your launch splash screen -->
|
||||
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:drawable="@android:color/white" />
|
||||
|
||||
<!-- You can insert your own image assets here -->
|
||||
<!-- <item>
|
||||
<bitmap
|
||||
android:gravity="center"
|
||||
android:src="@mipmap/launch_image" />
|
||||
</item> -->
|
||||
<item>
|
||||
<bitmap android:gravity="fill" android:src="@drawable/background"/>
|
||||
</item>
|
||||
</layer-list>
|
||||
|
|
|
|||
|
After Width: | Height: | Size: 305 KiB |
|
After Width: | Height: | Size: 305 KiB |
|
After Width: | Height: | Size: 305 KiB |
|
After Width: | Height: | Size: 305 KiB |
|
After Width: | Height: | Size: 305 KiB |
|
|
@ -0,0 +1,20 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is on -->
|
||||
<style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">
|
||||
<item name="android:forceDarkAllowed">false</item>
|
||||
<item name="android:windowFullscreen">false</item>
|
||||
<item name="android:windowDrawsSystemBarBackgrounds">false</item>
|
||||
<item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
|
||||
<item name="android:windowSplashScreenAnimatedIcon">@drawable/android12splash</item>
|
||||
</style>
|
||||
<!-- Theme applied to the Android Window as soon as the process has started.
|
||||
This theme determines the color of the Android Window while your
|
||||
Flutter UI initializes, as well as behind your Flutter UI while its
|
||||
running.
|
||||
|
||||
This Theme is only used starting with V2 of Flutter's Android embedding. -->
|
||||
<style name="NormalTheme" parent="@android:style/Theme.Black.NoTitleBar">
|
||||
<item name="android:windowBackground">?android:colorBackground</item>
|
||||
</style>
|
||||
</resources>
|
||||
|
|
@ -5,6 +5,10 @@
|
|||
<!-- Show a splash screen on the activity. Automatically removed when
|
||||
the Flutter engine draws its first frame -->
|
||||
<item name="android:windowBackground">@drawable/launch_background</item>
|
||||
<item name="android:forceDarkAllowed">false</item>
|
||||
<item name="android:windowFullscreen">false</item>
|
||||
<item name="android:windowDrawsSystemBarBackgrounds">false</item>
|
||||
<item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
|
||||
</style>
|
||||
<!-- Theme applied to the Android Window as soon as the process has started.
|
||||
This theme determines the color of the Android Window while your
|
||||
|
|
|
|||
|
|
@ -0,0 +1,20 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is off -->
|
||||
<style name="LaunchTheme" parent="@android:style/Theme.Light.NoTitleBar">
|
||||
<item name="android:forceDarkAllowed">false</item>
|
||||
<item name="android:windowFullscreen">false</item>
|
||||
<item name="android:windowDrawsSystemBarBackgrounds">false</item>
|
||||
<item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
|
||||
<item name="android:windowSplashScreenAnimatedIcon">@drawable/android12splash</item>
|
||||
</style>
|
||||
<!-- Theme applied to the Android Window as soon as the process has started.
|
||||
This theme determines the color of the Android Window while your
|
||||
Flutter UI initializes, as well as behind your Flutter UI while its
|
||||
running.
|
||||
|
||||
This Theme is only used starting with V2 of Flutter's Android embedding. -->
|
||||
<style name="NormalTheme" parent="@android:style/Theme.Light.NoTitleBar">
|
||||
<item name="android:windowBackground">?android:colorBackground</item>
|
||||
</style>
|
||||
</resources>
|
||||
|
|
@ -5,6 +5,10 @@
|
|||
<!-- Show a splash screen on the activity. Automatically removed when
|
||||
the Flutter engine draws its first frame -->
|
||||
<item name="android:windowBackground">@drawable/launch_background</item>
|
||||
<item name="android:forceDarkAllowed">false</item>
|
||||
<item name="android:windowFullscreen">false</item>
|
||||
<item name="android:windowDrawsSystemBarBackgrounds">false</item>
|
||||
<item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
|
||||
</style>
|
||||
<!-- Theme applied to the Android Window as soon as the process has started.
|
||||
This theme determines the color of the Android Window while your
|
||||
|
|
|
|||
|
After Width: | Height: | Size: 261 KiB |
|
After Width: | Height: | Size: 305 KiB |
|
|
@ -0,0 +1,14 @@
|
|||
flutter_native_splash:
|
||||
# 原生splash插件配置
|
||||
# 改变配置后执行如下命令:
|
||||
# flutter pub run flutter_native_splash:create
|
||||
# 如需恢复默认的白屏,执行如下命令
|
||||
# flutter pub run flutter_native_splash:remove
|
||||
# 设置闪屏页的默认态logo或背景图片路径
|
||||
background_image: assets/images/splash_native.png
|
||||
android_12:
|
||||
image: assets/images/splash.png
|
||||
android: true
|
||||
ios: true
|
||||
android_gravity: fill
|
||||
ios_content_mode: scaleToFill
|
||||
|
|
@ -1,23 +1,23 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "LaunchImage.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "LaunchImage@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "LaunchImage@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 68 B After Width: | Height: | Size: 69 B |
|
Before Width: | Height: | Size: 68 B After Width: | Height: | Size: 69 B |
|
Before Width: | Height: | Size: 68 B After Width: | Height: | Size: 69 B |
|
|
@ -16,13 +16,19 @@
|
|||
<view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<imageView opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" image="LaunchImage" translatesAutoresizingMaskIntoConstraints="NO" id="YRO-k0-Ey4">
|
||||
</imageView>
|
||||
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" image="LaunchBackground" translatesAutoresizingMaskIntoConstraints="NO" id="tWc-Dq-wcI"/>
|
||||
<imageView opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" image="LaunchImage" translatesAutoresizingMaskIntoConstraints="NO" id="YRO-k0-Ey4"></imageView>
|
||||
</subviews>
|
||||
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<constraints>
|
||||
<constraint firstItem="YRO-k0-Ey4" firstAttribute="centerX" secondItem="Ze5-6b-2t3" secondAttribute="centerX" id="1a2-6s-vTC"/>
|
||||
<constraint firstItem="YRO-k0-Ey4" firstAttribute="centerY" secondItem="Ze5-6b-2t3" secondAttribute="centerY" id="4X2-HB-R7a"/>
|
||||
<constraint firstItem="YRO-k0-Ey4" firstAttribute="leading" secondItem="Ze5-6b-2t3" secondAttribute="leading" id="3T2-ad-Qdv"/>
|
||||
<constraint firstItem="tWc-Dq-wcI" firstAttribute="bottom" secondItem="Ze5-6b-2t3" secondAttribute="bottom" id="RPx-PI-7Xg"/>
|
||||
<constraint firstItem="tWc-Dq-wcI" firstAttribute="top" secondItem="Ze5-6b-2t3" secondAttribute="top" id="SdS-ul-q2q"/>
|
||||
<constraint firstAttribute="trailing" secondItem="tWc-Dq-wcI" secondAttribute="trailing" id="Swv-Gf-Rwn"/>
|
||||
<constraint firstAttribute="trailing" secondItem="YRO-k0-Ey4" secondAttribute="trailing" id="TQA-XW-tRk"/>
|
||||
<constraint firstItem="YRO-k0-Ey4" firstAttribute="bottom" secondItem="Ze5-6b-2t3" secondAttribute="bottom" id="duK-uY-Gun"/>
|
||||
<constraint firstItem="tWc-Dq-wcI" firstAttribute="leading" secondItem="Ze5-6b-2t3" secondAttribute="leading" id="kV7-tw-vXt"/>
|
||||
<constraint firstItem="YRO-k0-Ey4" firstAttribute="top" secondItem="Ze5-6b-2t3" secondAttribute="top" id="xPn-NY-SIU"/>
|
||||
</constraints>
|
||||
</view>
|
||||
</viewController>
|
||||
|
|
@ -33,5 +39,6 @@
|
|||
</scenes>
|
||||
<resources>
|
||||
<image name="LaunchImage" width="168" height="185"/>
|
||||
<image name="LaunchBackground" width="1" height="1"/>
|
||||
</resources>
|
||||
</document>
|
||||
|
|
|
|||
|
|
@ -1,49 +1,53 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>$(DEVELOPMENT_LANGUAGE)</string>
|
||||
<key>CFBundleDisplayName</key>
|
||||
<string>Making School Asignment App</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>making_school_asignment_app</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>$(FLUTTER_BUILD_NAME)</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>$(FLUTTER_BUILD_NUMBER)</string>
|
||||
<key>LSRequiresIPhoneOS</key>
|
||||
<true/>
|
||||
<key>UILaunchStoryboardName</key>
|
||||
<string>LaunchScreen</string>
|
||||
<key>UIMainStoryboardFile</key>
|
||||
<string>Main</string>
|
||||
<key>UISupportedInterfaceOrientations</key>
|
||||
<array>
|
||||
<string>UIInterfaceOrientationPortrait</string>
|
||||
<string>UIInterfaceOrientationLandscapeLeft</string>
|
||||
<string>UIInterfaceOrientationLandscapeRight</string>
|
||||
</array>
|
||||
<key>UISupportedInterfaceOrientations~ipad</key>
|
||||
<array>
|
||||
<string>UIInterfaceOrientationPortrait</string>
|
||||
<string>UIInterfaceOrientationPortraitUpsideDown</string>
|
||||
<string>UIInterfaceOrientationLandscapeLeft</string>
|
||||
<string>UIInterfaceOrientationLandscapeRight</string>
|
||||
</array>
|
||||
<key>CADisableMinimumFrameDurationOnPhone</key>
|
||||
<true/>
|
||||
<key>UIApplicationSupportsIndirectInputEvents</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>$(DEVELOPMENT_LANGUAGE)</string>
|
||||
<key>CFBundleDisplayName</key>
|
||||
<string>Making School Asignment App</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>making_school_asignment_app</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>$(FLUTTER_BUILD_NAME)</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>$(FLUTTER_BUILD_NUMBER)</string>
|
||||
<key>LSRequiresIPhoneOS</key>
|
||||
<true/>
|
||||
<key>UILaunchStoryboardName</key>
|
||||
<string>LaunchScreen</string>
|
||||
<key>UIMainStoryboardFile</key>
|
||||
<string>Main</string>
|
||||
<key>UISupportedInterfaceOrientations</key>
|
||||
<array>
|
||||
<string>UIInterfaceOrientationPortrait</string>
|
||||
<string>UIInterfaceOrientationLandscapeLeft</string>
|
||||
<string>UIInterfaceOrientationLandscapeRight</string>
|
||||
</array>
|
||||
<key>UISupportedInterfaceOrientations~ipad</key>
|
||||
<array>
|
||||
<string>UIInterfaceOrientationPortrait</string>
|
||||
<string>UIInterfaceOrientationPortraitUpsideDown</string>
|
||||
<string>UIInterfaceOrientationLandscapeLeft</string>
|
||||
<string>UIInterfaceOrientationLandscapeRight</string>
|
||||
</array>
|
||||
<key>CADisableMinimumFrameDurationOnPhone</key>
|
||||
<true/>
|
||||
<key>UIApplicationSupportsIndirectInputEvents</key>
|
||||
<true/>
|
||||
<key>UIStatusBarHidden</key>
|
||||
<false/>
|
||||
<key>UIViewControllerBasedStatusBarAppearance</key>
|
||||
<false/>
|
||||
</dict>
|
||||
</plist>
|
||||
|
|
|
|||
|
|
@ -100,7 +100,7 @@ abstract class RetrofitClient {
|
|||
//学生
|
||||
@GET("/api/hms/HmsReport/GetQuestionStudentState")
|
||||
Future<List<Students>> getQuestionStudentState(
|
||||
@Query('HomeworkId') String homeworkId, @Query('TemplateId') int templateId, @Query('QuestionNo') int questionNo);
|
||||
@Query('HomeworkId') String homeworkId, @Query('TemplateId') int templateId, @Query('QuestionNo') String questionNo);
|
||||
|
||||
//收集订正
|
||||
@POST("/api/hms/Homework/Collect")
|
||||
|
|
|
|||
|
|
@ -9,7 +9,9 @@
|
|||
import 'package:making_school_asignment_app/common/job/common/base_page.dart';
|
||||
|
||||
class RequestConfig {
|
||||
static const _devBaseUrl = "http://192.168.2.119:1091"; // 开发
|
||||
// static const _devBaseUrl = "http://192.168.2.119:1091"; // 开发
|
||||
static const _devBaseUrl = "https://dpc-teacher-api.23544.com"; // 开发
|
||||
// static const _proBaseUrl = "http://192.168.2.119:1091"; // 生产
|
||||
static const _proBaseUrl = "https://dpc-teacher-api.23544.com"; // 生产
|
||||
static const imgUrl = 'https://dpc-job-oss.23544.com/';
|
||||
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ class Questions extends Object {
|
|||
int templateId;
|
||||
|
||||
@JsonKey(name: 'questionNo')
|
||||
int questionNo;
|
||||
String questionNo;
|
||||
|
||||
@JsonKey(name: 'questionType')
|
||||
int questionType;
|
||||
|
|
@ -213,7 +213,7 @@ class Dtls extends Object {
|
|||
int? templateId;
|
||||
|
||||
@JsonKey(name: 'questionNo')
|
||||
int questionNo;
|
||||
String questionNo;
|
||||
|
||||
@JsonKey(name: 'questionType')
|
||||
int questionType;
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ class KnowledgeReportDetail extends Object {
|
|||
int templateId;
|
||||
|
||||
@JsonKey(name: 'questionNo')
|
||||
int questionNo;
|
||||
String questionNo;
|
||||
|
||||
@JsonKey(name: 'questionType')
|
||||
int questionType;
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ class OriginalManuscriptHandwritingParams extends Object {
|
|||
int? templateId;
|
||||
|
||||
@JsonKey(name: 'questionNo')
|
||||
int? questionNo;
|
||||
String? questionNo;
|
||||
|
||||
@JsonKey(name: 'pageNum')
|
||||
int? pageNum;
|
||||
|
|
|
|||
|
|
@ -105,7 +105,7 @@ class KgtList extends Object {
|
|||
String id;
|
||||
|
||||
@JsonKey(name: 'questionNo')
|
||||
int questionNo;
|
||||
String questionNo;
|
||||
|
||||
@JsonKey(name: 'questionType')
|
||||
int questionType;
|
||||
|
|
@ -135,7 +135,7 @@ class ZgtList extends Object {
|
|||
String id;
|
||||
|
||||
@JsonKey(name: 'questionNo')
|
||||
int questionNo;
|
||||
String questionNo;
|
||||
|
||||
@JsonKey(name: 'questionType')
|
||||
int questionType;
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ class KgtList extends Object {
|
|||
int templateId;
|
||||
|
||||
@JsonKey(name: 'questionNo')
|
||||
int questionNo;
|
||||
String questionNo;
|
||||
|
||||
@JsonKey(name: 'answer')
|
||||
String? answer;
|
||||
|
|
@ -76,7 +76,7 @@ class ZgtList extends Object {
|
|||
int templateId;
|
||||
|
||||
@JsonKey(name: 'questionNo')
|
||||
int questionNo;
|
||||
String questionNo;
|
||||
|
||||
@JsonKey(name: 'answer')
|
||||
String? answer;
|
||||
|
|
|
|||
|
|
@ -16,11 +16,13 @@ import 'package:permission_handler/permission_handler.dart';
|
|||
|
||||
import 'common/config/request_config.dart';
|
||||
import 'common/utils/app_upgrade/upgradeLogic.dart';
|
||||
import 'package:flutter_native_splash/flutter_native_splash.dart';
|
||||
|
||||
void main() async {
|
||||
// 在测试模式下运行Get
|
||||
Get.testMode = true;
|
||||
|
||||
WidgetsBinding widgetsBinding = WidgetsFlutterBinding.ensureInitialized();
|
||||
FlutterNativeSplash.preserve(widgetsBinding: widgetsBinding);
|
||||
/// 初始化本地存储
|
||||
await Get.putAsync(() => StorageService().init());
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
import 'dart:async';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_native_splash/flutter_native_splash.dart';
|
||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:making_school_asignment_app/common/utils/app_upgrade/upgradeLogic.dart';
|
||||
|
|
@ -35,7 +36,7 @@ class _StartPageState extends State<StartPage> with RequestToolMixin {
|
|||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
|
||||
FlutterNativeSplash.remove();
|
||||
Get.put(HomeLogic());
|
||||
Get.put(WorkLogic());
|
||||
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ class AnswerHandwriting extends Dialog {
|
|||
final int studentId;
|
||||
final int? templateId;
|
||||
final int? pageNum;
|
||||
final int? questionNo;
|
||||
final String? questionNo;
|
||||
final Function closeCall;
|
||||
AnswerHandwriting(
|
||||
{super.key, required this.homeworkId, required this.studentId, required this.closeCall, this.templateId, this.pageNum, this.questionNo});
|
||||
|
|
@ -68,7 +68,7 @@ Future<void> showAnswerHandwriting(
|
|||
required int studentId,
|
||||
int? templateId,
|
||||
int? pageNum,
|
||||
int? questionNo,
|
||||
String? questionNo,
|
||||
}) async {
|
||||
backCall() {
|
||||
Navigator.of(context).pop();
|
||||
|
|
@ -118,7 +118,7 @@ class AnswerHandwritingMainBox extends HookWidget with EventBusMixin {
|
|||
final int? templateId;
|
||||
final int studentId;
|
||||
final int? pageNum;
|
||||
final int? questionNo;
|
||||
final String? questionNo;
|
||||
final Function closeCall;
|
||||
|
||||
@override
|
||||
|
|
@ -184,7 +184,7 @@ class UseMainBoxState with RequestToolMixin {
|
|||
final String homeworkId;
|
||||
final int studentId;
|
||||
final int? templateId;
|
||||
int? questionNo;
|
||||
String? questionNo;
|
||||
final ValueNotifier<int?> pageNum;
|
||||
final ValueNotifier<int> pageCount;
|
||||
final ValueNotifier<JobHandwriting?> handwritingData;
|
||||
|
|
@ -210,7 +210,7 @@ class UseMainBoxState with RequestToolMixin {
|
|||
});
|
||||
|
||||
// 工厂构造函数
|
||||
factory UseMainBoxState.use(String homeworkId, int studentId, [int? pageNum, int? questionNo, int? templateId]) {
|
||||
factory UseMainBoxState.use(String homeworkId, int studentId, [int? pageNum, String? questionNo, int? templateId]) {
|
||||
return UseMainBoxState._(
|
||||
homeworkId: homeworkId,
|
||||
templateId: templateId,
|
||||
|
|
|
|||
|
|
@ -207,7 +207,7 @@ class _KnowledgePointState extends State<KnowledgePoint> {
|
|||
child: quickText('知识点掌握情况', color: const Color.fromRGBO(92, 92, 92, 1), size: 14.sp, fontWeight: FontWeight.bold),
|
||||
),
|
||||
Expanded(
|
||||
child: ListView(
|
||||
child: widget.knowsList.isNotEmpty? ListView(
|
||||
children: widget.knowsList.value.map((item) {
|
||||
return Container(
|
||||
margin: EdgeInsets.only(bottom: 15.h, left: 15.r, right: 15.r),
|
||||
|
|
@ -264,8 +264,8 @@ class _KnowledgePointState extends State<KnowledgePoint> {
|
|||
int ttlCount = stu.queDtls!.length;
|
||||
stu.okRate = Utils.calcRate(okCount, ttlCount);
|
||||
stu.queDtls!.sort((a, b) {
|
||||
int num1 = a.questionNo;
|
||||
int num2 = b.questionNo;
|
||||
String num1 = a.questionNo;
|
||||
String num2 = b.questionNo;
|
||||
return num1.compareTo(num2);
|
||||
});
|
||||
}
|
||||
|
|
@ -289,7 +289,7 @@ class _KnowledgePointState extends State<KnowledgePoint> {
|
|||
],
|
||||
),
|
||||
);
|
||||
}).toList()),
|
||||
}).toList()): MyEmptyWidget(imgWidth: 100.r, imgHeight: 100.r, font: 8.sp),
|
||||
),
|
||||
],
|
||||
));
|
||||
|
|
|
|||
|
|
@ -110,8 +110,8 @@ class _QuickStudentDataTableState extends State<QuickStudentDataTable> {
|
|||
children: List.generate(item.kgtStu!.length, (index) {
|
||||
Dtls kgInfo = item.kgtStu![index];
|
||||
return Container(
|
||||
width: 14.r,
|
||||
height: 14.r,
|
||||
width: 20.r,
|
||||
height: 20.r,
|
||||
decoration: BoxDecoration(
|
||||
color: kgInfo.state == 0
|
||||
? const Color(0xFFD3D3D3)
|
||||
|
|
@ -120,7 +120,7 @@ class _QuickStudentDataTableState extends State<QuickStudentDataTable> {
|
|||
: kgInfo.state == 2
|
||||
? const Color(0xFFFF7474)
|
||||
: const Color(0xFF4CC793),
|
||||
borderRadius: BorderRadius.all(Radius.circular(7.r))),
|
||||
borderRadius: BorderRadius.all(Radius.circular(10.r))),
|
||||
child: Center(
|
||||
child: Text(
|
||||
kgInfo.questionNo.toString(),
|
||||
|
|
|
|||
|
|
@ -518,9 +518,9 @@ class _ReportTableState extends State<ReportTable> {
|
|||
style: TextStyle(
|
||||
fontSize: 10.sp, color: const Color(0xFF4CC793))),
|
||||
Image.asset(
|
||||
'assets/images/job_data_right_icon.png',
|
||||
width: 10.r,
|
||||
height: 10.r,
|
||||
'assets/images/green_right_icon.png',
|
||||
width: 12.r,
|
||||
height: 12.r,
|
||||
)
|
||||
],
|
||||
),
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ class StudentKgTable extends StatefulWidget {
|
|||
final List bodyList;
|
||||
final int? fixedRows;
|
||||
final int? fixedCols;
|
||||
final Function(int, int)? questionNumCall;
|
||||
final Function(String, int)? questionNumCall;
|
||||
|
||||
const StudentKgTable({
|
||||
Key? key,
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ class StudentZgTable extends StatefulWidget {
|
|||
final List bodyList;
|
||||
final int? fixedRows;
|
||||
final int? fixedCols;
|
||||
final Function(int, int)? questionNumCall;
|
||||
final Function(String, int)? questionNumCall;
|
||||
|
||||
const StudentZgTable({
|
||||
Key? key,
|
||||
|
|
|
|||
|
|
@ -446,8 +446,8 @@ class _StudentWorkDetailPageState extends State<StudentWorkDetailPage> {
|
|||
KgtList subjective =
|
||||
item.kgtList[i];
|
||||
return Container(
|
||||
width: 20.r,
|
||||
height: 20.r,
|
||||
width: 25.r,
|
||||
height: 25.r,
|
||||
decoration: BoxDecoration(
|
||||
color: Colors.transparent,
|
||||
border: Border.all(
|
||||
|
|
@ -459,7 +459,7 @@ class _StudentWorkDetailPageState extends State<StudentWorkDetailPage> {
|
|||
: subjective.state == 2
|
||||
? Color(0xFFFF7474)
|
||||
: Color(0xFF666666)),
|
||||
borderRadius: BorderRadius.all(Radius.circular(10.r))),
|
||||
borderRadius: BorderRadius.all(Radius.circular(12.5.r))),
|
||||
child: Center(
|
||||
child: Text(
|
||||
subjective.questionNo
|
||||
|
|
@ -524,8 +524,8 @@ class _StudentWorkDetailPageState extends State<StudentWorkDetailPage> {
|
|||
ZgtList subjective =
|
||||
item.zgtList[i];
|
||||
return Container(
|
||||
width: 20.r,
|
||||
height: 20.r,
|
||||
width: 25.r,
|
||||
height: 25.r,
|
||||
decoration: BoxDecoration(
|
||||
color: Colors.transparent,
|
||||
border: Border.all(
|
||||
|
|
@ -537,7 +537,7 @@ class _StudentWorkDetailPageState extends State<StudentWorkDetailPage> {
|
|||
: subjective.state == 2
|
||||
? Color(0xFFFF7474)
|
||||
: Color(0xFF666666)),
|
||||
borderRadius: BorderRadius.all(Radius.circular(10.r))),
|
||||
borderRadius: BorderRadius.all(Radius.circular(12.5.r))),
|
||||
child: Center(
|
||||
child: Text(
|
||||
subjective.questionNo
|
||||
|
|
|
|||
|
|
@ -93,7 +93,7 @@ dependencies:
|
|||
auto_updater: ^0.2.1
|
||||
permission_handler: ^11.0.1
|
||||
flutter_distributor: ^0.4.5
|
||||
|
||||
flutter_native_splash: ^2.4.1
|
||||
|
||||
dev_dependencies:
|
||||
flutter_test:
|
||||
|
|
|
|||
|
|
@ -1,6 +1,4 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<!DOCTYPE html><html><head>
|
||||
<!--
|
||||
If you are serving your web app in a path other than the root, change the
|
||||
href value below to reflect the base path you are serving from.
|
||||
|
|
@ -27,12 +25,196 @@
|
|||
<link rel="apple-touch-icon" href="icons/Icon-192.png">
|
||||
|
||||
<!-- Favicon -->
|
||||
<link rel="icon" type="image/png" href="favicon.png"/>
|
||||
<link rel="icon" type="image/png" href="favicon.png">
|
||||
|
||||
<title>making_school_asignment_app</title>
|
||||
<link rel="manifest" href="manifest.json">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<style id="splash-screen-style">
|
||||
html {
|
||||
height: 100%
|
||||
}
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
min-height: 100%;
|
||||
background-color: #ffffff;
|
||||
background-image: url("splash/img/light-background.png");
|
||||
background-size: 100% 100%;
|
||||
}
|
||||
|
||||
.center {
|
||||
margin: 0;
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
-ms-transform: translate(-50%, -50%);
|
||||
transform: translate(-50%, -50%);
|
||||
}
|
||||
|
||||
.contain {
|
||||
display:block;
|
||||
width:100%; height:100%;
|
||||
object-fit: contain;
|
||||
}
|
||||
|
||||
.stretch {
|
||||
display:block;
|
||||
width:100%; height:100%;
|
||||
}
|
||||
|
||||
.cover {
|
||||
display:block;
|
||||
width:100%; height:100%;
|
||||
object-fit: cover;
|
||||
}
|
||||
|
||||
.bottom {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
left: 50%;
|
||||
-ms-transform: translate(-50%, 0);
|
||||
transform: translate(-50%, 0);
|
||||
}
|
||||
|
||||
.bottomLeft {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
}
|
||||
|
||||
.bottomRight {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
right: 0;
|
||||
}
|
||||
</style>
|
||||
<script id="splash-screen-script">
|
||||
function removeSplashFromWeb() {
|
||||
document.getElementById("splash")?.remove();
|
||||
document.getElementById("splash-branding")?.remove();
|
||||
document.body.style.background = "transparent";
|
||||
}
|
||||
</script>
|
||||
<meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" name="viewport">
|
||||
</head>
|
||||
<body>
|
||||
<script src="flutter_bootstrap.js" async></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
|
||||
|
||||
|
||||
<script src="flutter_bootstrap.js" async=""></script>
|
||||
|
||||
|
||||
</body></html>
|
||||