mcy_new #1

Merged
wangyang merged 179 commits from mcy_new into master 2025-08-28 10:10:45 +08:00
16 changed files with 428 additions and 540 deletions
Showing only changes of commit eb4b5ae7a0 - Show all commits

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 B

View File

@ -6,7 +6,7 @@
<item name="android:windowFullscreen">false</item> <item name="android:windowFullscreen">false</item>
<item name="android:windowDrawsSystemBarBackgrounds">false</item> <item name="android:windowDrawsSystemBarBackgrounds">false</item>
<item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item> <item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
<item name="android:windowSplashScreenBackground">#42a5f5</item> <item name="android:windowSplashScreenBackground">#eeeeee</item>
<item name="android:windowSplashScreenAnimatedIcon">@drawable/android12splash</item> <item name="android:windowSplashScreenAnimatedIcon">@drawable/android12splash</item>
</style> </style>
<!-- Theme applied to the Android Window as soon as the process has started. <!-- Theme applied to the Android Window as soon as the process has started.

View File

@ -6,7 +6,7 @@
<item name="android:windowFullscreen">false</item> <item name="android:windowFullscreen">false</item>
<item name="android:windowDrawsSystemBarBackgrounds">false</item> <item name="android:windowDrawsSystemBarBackgrounds">false</item>
<item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item> <item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
<item name="android:windowSplashScreenBackground">#42a5f5</item> <item name="android:windowSplashScreenBackground">#eeeeee</item>
<item name="android:windowSplashScreenAnimatedIcon">@drawable/android12splash</item> <item name="android:windowSplashScreenAnimatedIcon">@drawable/android12splash</item>
</style> </style>
<!-- Theme applied to the Android Window as soon as the process has started. <!-- Theme applied to the Android Window as soon as the process has started.

View File

@ -5,7 +5,7 @@ flutter_native_splash:
# 如需恢复默认的白屏,执行如下命令 # 如需恢复默认的白屏,执行如下命令
# flutter pub run flutter_native_splash:remove # flutter pub run flutter_native_splash:remove
# 设置闪屏页的默认态logo或背景图片路径 # 设置闪屏页的默认态logo或背景图片路径
color: "#42a5f5" color: "#eeeeee"
image_ios: assets/images/splash_native.png image_ios: assets/images/splash_native.png
background_image_android: assets/images/splash_native.png background_image_android: assets/images/splash_native.png
android_12: android_12:

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 B

View File

@ -23,6 +23,7 @@ void main() async {
Get.testMode = true; Get.testMode = true;
WidgetsBinding widgetsBinding = WidgetsFlutterBinding.ensureInitialized(); WidgetsBinding widgetsBinding = WidgetsFlutterBinding.ensureInitialized();
FlutterNativeSplash.preserve(widgetsBinding: widgetsBinding); FlutterNativeSplash.preserve(widgetsBinding: widgetsBinding);
/// ///
await Get.putAsync(() => StorageService().init()); await Get.putAsync(() => StorageService().init());
@ -41,7 +42,7 @@ void main() async {
SystemChrome.setSystemUIOverlayStyle(const SystemUiOverlayStyle( SystemChrome.setSystemUIOverlayStyle(const SystemUiOverlayStyle(
statusBarColor: Colors.transparent, // statusBarColor: Colors.transparent, //
statusBarIconBrightness: Brightness.dark // dark: light statusBarIconBrightness: Brightness.light // dark: light
)); ));
SystemChrome.setEnabledSystemUIMode(SystemUiMode.manual, overlays: [SystemUiOverlay.top, SystemUiOverlay.bottom]); // SystemChrome.setEnabledSystemUIMode(SystemUiMode.manual, overlays: [SystemUiOverlay.top, SystemUiOverlay.bottom]); //
await SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp, DeviceOrientation.portraitDown]); // await SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp, DeviceOrientation.portraitDown]); //

View File

@ -1,6 +1,7 @@
import 'dart:async'; import 'dart:async';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_native_splash/flutter_native_splash.dart'; import 'package:flutter_native_splash/flutter_native_splash.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
@ -36,7 +37,8 @@ class _StartPageState extends State<StartPage> with RequestToolMixin {
@override @override
void initState() { void initState() {
super.initState(); super.initState();
FlutterNativeSplash.remove(); Future.delayed(const Duration(seconds: 3), () => FlutterNativeSplash.remove());
Get.put(HomeLogic()); Get.put(HomeLogic());
Get.put(WorkLogic()); Get.put(WorkLogic());
@ -87,6 +89,7 @@ class _StartPageState extends State<StartPage> with RequestToolMixin {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
SystemChrome.setSystemUIOverlayStyle(const SystemUiOverlayStyle(statusBarIconBrightness: Brightness.dark));
return WillPopScope( return WillPopScope(
child: Scaffold( child: Scaffold(
body: PageView( body: PageView(
@ -94,6 +97,11 @@ class _StartPageState extends State<StartPage> with RequestToolMixin {
physics: const BouncingScrollPhysics(), physics: const BouncingScrollPhysics(),
onPageChanged: (index) { onPageChanged: (index) {
_pageController._pageIndexState.pageIndex.value = index; _pageController._pageIndexState.pageIndex.value = index;
if (index == 2) {
SystemChrome.setSystemUIOverlayStyle(const SystemUiOverlayStyle(statusBarIconBrightness: Brightness.light));
} else {
SystemChrome.setSystemUIOverlayStyle(const SystemUiOverlayStyle(statusBarIconBrightness: Brightness.dark));
}
}, },
children: _bodyList, children: _bodyList,
), ),
@ -117,12 +125,15 @@ class _StartPageState extends State<StartPage> with RequestToolMixin {
), ),
], ],
// //
type: BottomNavigationBarType.fixed, type: BottomNavigationBarType.shifting,
fixedColor: Theme.of(context).primaryColor,
unselectedItemColor: Colors.grey,
// unselectedItemColor: const Color.fromRGBO(80, 87, 103, 1),
// backgroundColor: Colors.white,
// //
currentIndex: _pageController._pageIndexState.pageIndex.value, currentIndex: _pageController._pageIndexState.pageIndex.value,
//tabBottom的点击监听 //tabBottom的点击监听
onTap: (index) { onTap: (index) {
print('appbar下标${index}');
_pageController._pageIndexState.pageController.jumpToPage(index); _pageController._pageIndexState.pageController.jumpToPage(index);
}, },
); );

View File

@ -66,14 +66,7 @@ class _MyInfoState extends State<MyInfo> with AutomaticKeepAliveClientMixin {
); );
return OrientationBuilder(builder: (BuildContext context, Orientation orientation) { return OrientationBuilder(builder: (BuildContext context, Orientation orientation) {
return AnnotatedRegion( return Stack(
value: const SystemUiOverlayStyle(
statusBarColor: Colors.transparent,
systemNavigationBarIconBrightness: Brightness.light,
statusBarIconBrightness: Brightness.light,
statusBarBrightness: Brightness.dark,
),
child: Stack(
children: [ children: [
SizedBox( SizedBox(
height: double.infinity, height: double.infinity,
@ -172,10 +165,7 @@ class _MyInfoState extends State<MyInfo> with AutomaticKeepAliveClientMixin {
), ),
Row( Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [Text('所在学校', style: personalInfoTitleStly), Text(userInfo.value?.schoolName ?? '', style: personalInfoValStly)],
Text('所在学校', style: personalInfoTitleStly),
Text(userInfo.value?.schoolName ?? '', style: personalInfoValStly)
],
), ),
/* Row( /* Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
@ -289,7 +279,6 @@ class _MyInfoState extends State<MyInfo> with AutomaticKeepAliveClientMixin {
), ),
), ),
], ],
),
); );
}); });
} }

View File

@ -27,9 +27,7 @@ class ReadOverPage extends StatefulWidget {
class _ReadOverPageState extends State<ReadOverPage> { class _ReadOverPageState extends State<ReadOverPage> {
final logic = Get.find<ReadOverLogic>(); final logic = Get.find<ReadOverLogic>();
final state = Get final state = Get.find<ReadOverLogic>().state;
.find<ReadOverLogic>()
.state;
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -39,7 +37,7 @@ class _ReadOverPageState extends State<ReadOverPage> {
systemNavigationBarDividerColor: null, systemNavigationBarDividerColor: null,
statusBarColor: Colors.white, statusBarColor: Colors.white,
systemNavigationBarIconBrightness: Brightness.light, systemNavigationBarIconBrightness: Brightness.light,
statusBarIconBrightness: Brightness.dark, statusBarIconBrightness: Brightness.light,
statusBarBrightness: Brightness.light, statusBarBrightness: Brightness.light,
), ),
child: Scaffold( child: Scaffold(
@ -50,10 +48,7 @@ class _ReadOverPageState extends State<ReadOverPage> {
children: <Widget>[ children: <Widget>[
Container( Container(
color: Colors.white, color: Colors.white,
margin: EdgeInsets.only(top: MediaQuery margin: EdgeInsets.only(top: MediaQuery.of(context).padding.top),
.of(context)
.padding
.top),
padding: EdgeInsets.only(bottom: 9.h, top: 4.h), padding: EdgeInsets.only(bottom: 9.h, top: 4.h),
child: Row( child: Row(
crossAxisAlignment: CrossAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center,
@ -101,9 +96,7 @@ class _ReadOverPageState extends State<ReadOverPage> {
indicator: const UnderlineTabIndicator( indicator: const UnderlineTabIndicator(
borderSide: BorderSide( borderSide: BorderSide(
width: 0, // 0线 width: 0, // 0线
color: Colors.transparent color: Colors.transparent),
),
), ),
onTap: (index) { onTap: (index) {
state.tabIndex.value = index; state.tabIndex.value = index;
@ -122,23 +115,14 @@ class _ReadOverPageState extends State<ReadOverPage> {
width: 140.w, width: 140.w,
alignment: Alignment.center, alignment: Alignment.center,
decoration: BoxDecoration( decoration: BoxDecoration(
color: state.tabIndex.value == 0 color: state.tabIndex.value == 0 ? const Color.fromRGBO(255, 255, 255, 1) : null,
? const Color.fromRGBO( borderRadius: BorderRadius.all(Radius.circular(8.r)),
255, 255, 255, 1)
: null,
borderRadius: BorderRadius.all(
Radius.circular(8.r)),
), ),
child: quickText( child: quickText(
'待批阅', '待批阅',
size: 14.sp, size: 14.sp,
color: state.tabIndex.value == 0 ? Theme color: state.tabIndex.value == 0 ? Theme.of(context).primaryColor : const Color.fromRGBO(80, 94, 110, 1),
.of(context) fontWeight: state.tabIndex.value == 0 ? FontWeight.bold : null,
.primaryColor : const Color.fromRGBO(
80, 94, 110, 1),
fontWeight: state.tabIndex.value == 0
? FontWeight.bold
: null,
), ),
); );
}), }),
@ -151,23 +135,14 @@ class _ReadOverPageState extends State<ReadOverPage> {
width: 140.w, width: 140.w,
alignment: Alignment.center, alignment: Alignment.center,
decoration: BoxDecoration( decoration: BoxDecoration(
color: state.tabIndex.value == 1 color: state.tabIndex.value == 1 ? const Color.fromRGBO(255, 255, 255, 1) : null,
? const Color.fromRGBO( borderRadius: BorderRadius.all(Radius.circular(8.r)),
255, 255, 255, 1)
: null,
borderRadius: BorderRadius.all(
Radius.circular(8.r)),
), ),
child: quickText( child: quickText(
'已批阅', '已批阅',
size: 14.sp, size: 14.sp,
color: state.tabIndex.value == 1 ? Theme color: state.tabIndex.value == 1 ? Theme.of(context).primaryColor : const Color.fromRGBO(80, 94, 110, 1),
.of(context) fontWeight: state.tabIndex.value == 1 ? FontWeight.bold : null,
.primaryColor : const Color.fromRGBO(
80, 94, 110, 1),
fontWeight: state.tabIndex.value == 1
? FontWeight.bold
: null,
), ),
); );
}), }),
@ -180,22 +155,22 @@ class _ReadOverPageState extends State<ReadOverPage> {
flex: 1, flex: 1,
child: InkWell( child: InkWell(
onTap: () { onTap: () {
Get.toNamed(Routes.studentHistoryWorkPage, Get.toNamed(Routes.studentHistoryWorkPage, arguments: {'page': 'set'});
arguments: {'page': 'set'});
}, },
child: Icon( child: Icon(const IconData(0xe63e, fontFamily: "AlibabaIcon"), color: const Color.fromRGBO(44, 48, 63, 1), size: 24.sp),
const IconData(0xe63e, fontFamily: "AlibabaIcon"),
color: const Color.fromRGBO(44, 48, 63, 1),
size: 24.sp),
), ),
), ),
], ],
), ),
), ),
Expanded(child: Obx(() { Expanded(
return AnnotateList(tabIndex: state.tabIndex.value,assessType: 0,); child: Obx(() {
}),), return AnnotateList(
tabIndex: state.tabIndex.value,
assessType: 0,
);
}),
),
], ],
); );
}, },

View File

@ -24,28 +24,27 @@ class HomePage extends StatefulWidget {
State<HomePage> createState() => _HomePageState(); State<HomePage> createState() => _HomePageState();
} }
class _HomePageState extends State<HomePage> class _HomePageState extends State<HomePage> with AutomaticKeepAliveClientMixin {
with AutomaticKeepAliveClientMixin {
final logic = Get.find<HomeLogic>(); final logic = Get.find<HomeLogic>();
final state = Get.find<HomeLogic>().state; final state = Get.find<HomeLogic>().state;
@override @override
bool get wantKeepAlive => true; bool get wantKeepAlive => true;
@override
void initState() {
super.initState();
SystemChrome.setSystemUIOverlayStyle(const SystemUiOverlayStyle(
statusBarIconBrightness: Brightness.dark,
systemStatusBarContrastEnforced: false,
));
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
super.build(context); super.build(context);
var spaceWidth = SizedBox(height: ScreenUtil().screenWidth / 30); var spaceWidth = SizedBox(height: ScreenUtil().screenWidth / 30);
return SafeArea( return SafeArea(
child: AnnotatedRegion(
value: const SystemUiOverlayStyle(
systemNavigationBarColor: Color(0xFF000000),
systemNavigationBarDividerColor: null,
statusBarColor: Colors.white,
systemNavigationBarIconBrightness: Brightness.light,
statusBarIconBrightness: Brightness.dark,
statusBarBrightness: Brightness.light,
),
child: OrientationBuilder( child: OrientationBuilder(
builder: (BuildContext context, Orientation orientation) { builder: (BuildContext context, Orientation orientation) {
return EasyRefresh( return EasyRefresh(
@ -82,28 +81,19 @@ class _HomePageState extends State<HomePage>
SizedBox(height: MediaQuery.of(context).padding.top / 2), SizedBox(height: MediaQuery.of(context).padding.top / 2),
Obx(() { Obx(() {
return $TermRow([ return $TermRow([
EntranceModel( EntranceModel(title: '作业批阅', image: 'assets/images/job_home_marking.png', navigationUrl: Routes.readOverPage),
title: '作业批阅',
image: 'assets/images/job_home_marking.png',
navigationUrl: Routes.readOverPage),
EntranceModel( EntranceModel(
title: '学生历史作业', title: '学生历史作业',
image: 'assets/images/job_home_history.png', image: 'assets/images/job_home_history.png',
navigationUrl: Routes.studentHistoryWorkPage, navigationUrl: Routes.studentHistoryWorkPage,
page: 'history', page: 'history',
), ),
EntranceModel( EntranceModel(title: '知识点点掌握', image: 'assets/images/job_home_knowledge.png', navigationUrl: Routes.knowledgePointsGraspPage)
title: '知识点点掌握',
image: 'assets/images/job_home_knowledge.png',
navigationUrl: Routes.knowledgePointsGraspPage)
], state.totalCount.value); ], state.totalCount.value);
}), }),
spaceWidth, spaceWidth,
$TermRow([ $TermRow([
EntranceModel( EntranceModel(title: '答题轨迹', image: 'assets/images/job_home_answer_record.png', navigationUrl: Routes.answerTrajectoryPage),
title: '答题轨迹',
image: 'assets/images/job_home_answer_record.png',
navigationUrl: Routes.answerTrajectoryPage),
EntranceModel( EntranceModel(
title: '优先批阅设定', title: '优先批阅设定',
image: 'assets/images/job_home_youxian.png', image: 'assets/images/job_home_youxian.png',
@ -127,13 +117,11 @@ class _HomePageState extends State<HomePage>
padding: EdgeInsets.symmetric(horizontal: 12.w), padding: EdgeInsets.symmetric(horizontal: 12.w),
child: state.workList.isNotEmpty child: state.workList.isNotEmpty
? Column( ? Column(
children: children: List.generate(state.workList.length, (index) {
List.generate(state.workList.length, (index) {
Items item = state.workList[index]; Items item = state.workList[index];
return InkWell( return InkWell(
onTap: () { onTap: () {
Get.toNamed(Routes.annotateClassPage, Get.toNamed(Routes.annotateClassPage, arguments: {
arguments: {
'id': item.id, 'id': item.id,
'name': item.name, 'name': item.name,
'grade': item.grade, 'grade': item.grade,
@ -146,18 +134,14 @@ class _HomePageState extends State<HomePage>
children: [ children: [
SizedBox(height: 4.h), SizedBox(height: 4.h),
Container( Container(
padding: EdgeInsets.symmetric( padding: EdgeInsets.symmetric(vertical: 15.h, horizontal: 10.w),
vertical: 15.h, horizontal: 10.w),
width: double.infinity, width: double.infinity,
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: borderRadius: BorderRadius.circular(6.r),
BorderRadius.circular(6.r), color: const Color.fromRGBO(255, 255, 255, 1),
color: const Color.fromRGBO(
255, 255, 255, 1),
boxShadow: const [ boxShadow: const [
BoxShadow( BoxShadow(
color: Color.fromRGBO( color: Color.fromRGBO(210, 216, 241, 1),
210, 216, 241, 1),
offset: Offset.zero, //y轴偏移量 offset: Offset.zero, //y轴偏移量
blurRadius: 5.8, // blurRadius: 5.8, //
spreadRadius: 0, // spreadRadius: 0, //
@ -165,59 +149,34 @@ class _HomePageState extends State<HomePage>
], ],
), ),
child: Column( child: Column(
mainAxisAlignment: mainAxisAlignment: MainAxisAlignment.spaceBetween,
MainAxisAlignment.spaceBetween,
children: [ children: [
Row( Row(
crossAxisAlignment: crossAxisAlignment: CrossAxisAlignment.start,
CrossAxisAlignment.start,
children: [ children: [
Container( Container(
width: Utils.isPad() width: Utils.isPad() ? 32.w : 38.w,
? 32.w
: 38.w,
height: 18.h, height: 18.h,
alignment: Alignment.center, alignment: Alignment.center,
padding: EdgeInsets.only( padding: EdgeInsets.only(left: Utils.isPad() ? 2.w : 3.w),
left: Utils.isPad()
? 2.w
: 3.w),
decoration: BoxDecoration( decoration: BoxDecoration(
color: state.type == 1 color: state.type == 1 ? const Color(0xFF4CC793) : const Color.fromRGBO(255, 175, 56, 1),
? const Color( borderRadius: BorderRadius.only(
0xFF4CC793) topLeft: Radius.circular(14.r),
: const Color.fromRGBO( topRight: Radius.circular(3.r),
255, 175, 56, 1), bottomLeft: Radius.circular(4.r),
borderRadius: bottomRight: Radius.circular(4.r),
BorderRadius.only(
topLeft:
Radius.circular(14.r),
topRight:
Radius.circular(3.r),
bottomLeft:
Radius.circular(4.r),
bottomRight:
Radius.circular(4.r),
), ),
), ),
margin: EdgeInsets.only( margin: EdgeInsets.only(top: 3.h, right: 4.w),
top: 3.h, right: 4.w), child: quickText(state.type == 1 ? '作业' : '考试', color: Colors.white, size: 10.sp),
child: quickText(
state.type == 1
? '作业'
: '考试',
color: Colors.white,
size: 10.sp),
), ),
Expanded( Expanded(
child: quickText( child: quickText(
item.name, item.name,
maxLines: 2, maxLines: 2,
size: Utils.isPad() size: Utils.isPad() ? 14.sp : 16.sp,
? 14.sp color: const Color.fromRGBO(70, 70, 70, 1),
: 16.sp,
color: const Color.fromRGBO(
70, 70, 70, 1),
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
), ),
) )
@ -225,54 +184,30 @@ class _HomePageState extends State<HomePage>
), ),
SizedBox(height: 10.h), SizedBox(height: 10.h),
Row( Row(
crossAxisAlignment: crossAxisAlignment: CrossAxisAlignment.end,
CrossAxisAlignment.end,
children: [ children: [
quickText( quickText(
EnumUtils.formatSubject( EnumUtils.formatSubject(item.subject),
item.subject), color: const Color.fromRGBO(97, 97, 97, 1),
color: const Color.fromRGBO(
97, 97, 97, 1),
size: 12.sp, size: 12.sp,
), ),
quickText(' / ', quickText(' / ',
color: const Color.fromRGBO( color: const Color.fromRGBO(130, 130, 130, 1), size: 11.sp, fontWeight: FontWeight.w500),
130, 130, 130, 1),
size: 11.sp,
fontWeight:
FontWeight.w500),
Row( Row(
crossAxisAlignment: crossAxisAlignment: CrossAxisAlignment.end,
CrossAxisAlignment.end,
children: [ children: [
quickText('题量:', quickText('题量:', color: const Color.fromRGBO(130, 130, 130, 1), size: 11.sp),
color: const Color
.fromRGBO(
130, 130, 130, 1),
size: 11.sp),
quickText( quickText(
'${item.questionCount! - item.annotateCount!}', '${item.questionCount! - item.annotateCount!}',
color: color: const Color.fromRGBO(97, 97, 97, 1),
const Color.fromRGBO(
97, 97, 97, 1),
size: 13.sp, size: 13.sp,
), ),
], ],
), ),
quickText(' / ', quickText(' / ',
color: const Color.fromRGBO( color: const Color.fromRGBO(130, 130, 130, 1), size: 11.sp, fontWeight: FontWeight.w500),
130, 130, 130, 1), quickText(DateTime.parse(item.publishTime).toString().substring(0, 10),
size: 11.sp, color: const Color.fromRGBO(97, 97, 97, 1), size: 12.sp),
fontWeight:
FontWeight.w500),
quickText(
DateTime.parse(
item.publishTime)
.toString()
.substring(0, 10),
color: const Color.fromRGBO(
97, 97, 97, 1),
size: 12.sp),
], ],
), ),
SizedBox(height: 10.h), SizedBox(height: 10.h),
@ -281,41 +216,24 @@ class _HomePageState extends State<HomePage>
Expanded( Expanded(
child: Container( child: Container(
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: borderRadius: BorderRadius.circular(10.r),
BorderRadius.circular(
10.r),
), ),
child: child: LinearPercentIndicator(
LinearPercentIndicator(
padding: EdgeInsets.zero, padding: EdgeInsets.zero,
animation: true, animation: true,
lineHeight: 8.h, lineHeight: 8.h,
animationDuration: 2500, animationDuration: 2500,
percent: item percent: item.annotateRate == null ? 0 : item.annotateRate! / 100,
.annotateRate == progressColor: const Color(0xFF4CC793),
null backgroundColor: const Color(0xFFE8E8E8),
? 0 barRadius: Radius.circular(10.r),
: item.annotateRate! /
100,
progressColor:
const Color(
0xFF4CC793),
backgroundColor:
const Color(
0xFFE8E8E8),
barRadius:
Radius.circular(10.r),
), ),
), ),
), ),
SizedBox( SizedBox(
width: 10.r, width: 10.r,
), ),
quickText( quickText('${item.annotateRate!.toStringAsFixed(0)}%', size: 10.sp, color: const Color(0xFF464646)),
'${item.annotateRate!.toStringAsFixed(0)}%',
size: 10.sp,
color: const Color(
0xFF464646)),
], ],
), ),
// FavoriteButton(jobTaskItem.id, jobTaskItem.title), // FavoriteButton(jobTaskItem.id, jobTaskItem.title),
@ -336,7 +254,7 @@ class _HomePageState extends State<HomePage>
); );
}, },
), ),
)); );
} }
@override @override
@ -352,11 +270,7 @@ class EntranceModel extends Object {
String navigationUrl; String navigationUrl;
String? page; String? page;
EntranceModel( EntranceModel({required this.title, required this.image, required this.navigationUrl, this.page});
{required this.title,
required this.image,
required this.navigationUrl,
this.page});
} }
@swidget @swidget
@ -365,8 +279,7 @@ Widget $termRow(BuildContext context, List<EntranceModel> items, int? data) {
Widget childWidget; Widget childWidget;
switch (leng) { switch (leng) {
case 1: case 1:
childWidget = childWidget = Row(children: [Expanded(child: $TermItem(items[0], data!))]);
Row(children: [Expanded(child: $TermItem(items[0], data!))]);
break; break;
case 2: case 2:
childWidget = Row(children: [ childWidget = Row(children: [
@ -401,13 +314,11 @@ Widget $termRow(BuildContext context, List<EntranceModel> items, int? data) {
childWidget = Container(); childWidget = Container();
} }
return Container( return Container(padding: EdgeInsets.symmetric(horizontal: 14.w), child: childWidget);
padding: EdgeInsets.symmetric(horizontal: 14.w), child: childWidget);
} }
@swidget @swidget
Widget $termItem(BuildContext context, EntranceModel e, int data, Widget $termItem(BuildContext context, EntranceModel e, int data, {double? theHeight}) {
{double? theHeight}) {
bool isJob = e.title == '作业批阅'; bool isJob = e.title == '作业批阅';
return Material( return Material(
@ -436,14 +347,10 @@ Widget $termItem(BuildContext context, EntranceModel e, int data,
badgeStyle: badges.BadgeStyle( badgeStyle: badges.BadgeStyle(
badgeColor: const Color.fromRGBO(255, 105, 105, 1), badgeColor: const Color.fromRGBO(255, 105, 105, 1),
shape: badges.BadgeShape.square, shape: badges.BadgeShape.square,
borderRadius: BorderRadius.only( borderRadius: BorderRadius.only(topLeft: Radius.circular(10.r), topRight: Radius.circular(8.5.r), bottomRight: Radius.circular(8.5.r)),
topLeft: Radius.circular(10.r),
topRight: Radius.circular(8.5.r),
bottomRight: Radius.circular(8.5.r)),
// borderSide: BorderSide(color: Colors.white, width: 2), // borderSide: BorderSide(color: Colors.white, width: 2),
elevation: 1, elevation: 1,
padding: EdgeInsets.symmetric( padding: EdgeInsets.symmetric(horizontal: Utils.isPad() ? 11.w : 16.w, vertical: 2.h),
horizontal: Utils.isPad() ? 11.w : 16.w, vertical: 2.h),
), ),
position: badges.BadgePosition.topEnd(top: 10.r, end: 10.r), position: badges.BadgePosition.topEnd(top: 10.r, end: 10.r),
child: Container( child: Container(
@ -466,25 +373,17 @@ Widget $termItem(BuildContext context, EntranceModel e, int data,
? Column( ? Column(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: [ children: [
Image.asset(e.image, Image.asset(e.image, height: 32.r, width: 32.r, fit: BoxFit.cover),
height: 32.r, width: 32.r, fit: BoxFit.cover),
SizedBox(height: 6.r), SizedBox(height: 6.r),
quickText(e.title, quickText(e.title, size: 12.sp, color: const Color.fromRGBO(79, 79, 79, 1), fontWeight: FontWeight.w500),
size: 12.sp,
color: const Color.fromRGBO(79, 79, 79, 1),
fontWeight: FontWeight.w500),
], ],
) )
: Row( : Row(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: [ children: [
Image.asset(e.image, Image.asset(e.image, height: 32.r, width: 32.r, fit: BoxFit.cover),
height: 32.r, width: 32.r, fit: BoxFit.cover),
SizedBox(width: 6.r), SizedBox(width: 6.r),
quickText(e.title, quickText(e.title, size: 12.sp, color: const Color.fromRGBO(79, 79, 79, 1), fontWeight: FontWeight.w500),
size: 12.sp,
color: const Color.fromRGBO(79, 79, 79, 1),
fontWeight: FontWeight.w500),
], ],
), ),
), ),

View File

@ -1,5 +1,6 @@
import 'package:dio/dio.dart'; import 'package:dio/dio.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_easyloading/flutter_easyloading.dart'; import 'package:flutter_easyloading/flutter_easyloading.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:making_school_asignment_app/common/mixins/request_tool_mixin.dart'; import 'package:making_school_asignment_app/common/mixins/request_tool_mixin.dart';

View File

@ -24,6 +24,7 @@ class _LoginPageState extends State<LoginPage> {
@override @override
void initState() { void initState() {
SystemChrome.setSystemUIOverlayStyle(const SystemUiOverlayStyle(statusBarIconBrightness: Brightness.light));
Future.delayed(Duration.zero, () => upgradeLogic.getAppUpgrade(context)); Future.delayed(Duration.zero, () => upgradeLogic.getAppUpgrade(context));
super.initState(); super.initState();
} }
@ -36,6 +37,7 @@ class _LoginPageState extends State<LoginPage> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
SystemChrome.setSystemUIOverlayStyle(const SystemUiOverlayStyle(statusBarIconBrightness: Brightness.light));
return GestureDetector( return GestureDetector(
behavior: HitTestBehavior.translucent, behavior: HitTestBehavior.translucent,
onTap: () { onTap: () {
@ -228,10 +230,8 @@ class _LoginPageState extends State<LoginPage> {
value: state.keepPwd.value, value: state.keepPwd.value,
onChanged: (value) { onChanged: (value) {
// Get.focusScope?.nextFocus(); // Get.focusScope?.nextFocus();
FocusScope.of(context).requestFocus( FocusScope.of(context).requestFocus(state.pwdFocus);
state.pwdFocus); FocusScope.of(context).requestFocus(state.theFocus);
FocusScope.of(context).requestFocus(
state.theFocus);
state.keepPwd.value = value ?? false; state.keepPwd.value = value ?? false;
}, },
), ),
@ -243,10 +243,8 @@ class _LoginPageState extends State<LoginPage> {
Utils.hideKeyboard(); Utils.hideKeyboard();
Get.focusScope?.nextFocus(); Get.focusScope?.nextFocus();
Get.focusScope?.nextFocus(); Get.focusScope?.nextFocus();
FocusScope.of(context).requestFocus( FocusScope.of(context).requestFocus(state.pwdFocus);
state.pwdFocus); FocusScope.of(context).requestFocus(state.theFocus);
FocusScope.of(context).requestFocus(
state.theFocus);
state.keepPwd.value = !state.keepPwd.value; state.keepPwd.value = !state.keepPwd.value;
}, },
child: Text( child: Text(
@ -319,7 +317,10 @@ class _LoginPageState extends State<LoginPage> {
onTap: () { onTap: () {
Get.toNamed(Routes.agreementPage, arguments: {"type": AGREEMENT_KEY.USER_AGREEMENT.name}); Get.toNamed(Routes.agreementPage, arguments: {"type": AGREEMENT_KEY.USER_AGREEMENT.name});
}, },
child: quickText('请仔细阅读', size: 11.sp,), child: quickText(
'请仔细阅读',
size: 11.sp,
),
), ),
InkWell( InkWell(
onTap: () { onTap: () {

View File

@ -27,19 +27,21 @@ class _WorkPageState extends State<WorkPage> with AutomaticKeepAliveClientMixin
@override @override
bool get wantKeepAlive => true; bool get wantKeepAlive => true;
@override
void initState() {
// TODO: implement initState
super.initState();
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
super.build(context); super.build(context);
return AnnotatedRegion(
value: const SystemUiOverlayStyle( SystemChrome.setSystemUIOverlayStyle(const SystemUiOverlayStyle(
systemNavigationBarColor: Color(0xFF000000),
systemNavigationBarDividerColor: null,
statusBarColor: Colors.white,
systemNavigationBarIconBrightness: Brightness.light,
statusBarIconBrightness: Brightness.dark, statusBarIconBrightness: Brightness.dark,
statusBarBrightness: Brightness.light, systemStatusBarContrastEnforced: false,
), ));
child: Scaffold( return Scaffold(
backgroundColor: const Color.fromRGBO(244, 244, 244, 1), backgroundColor: const Color.fromRGBO(244, 244, 244, 1),
body: OrientationBuilder( body: OrientationBuilder(
builder: (BuildContext context, Orientation orientation) { builder: (BuildContext context, Orientation orientation) {
@ -160,7 +162,6 @@ class _WorkPageState extends State<WorkPage> with AutomaticKeepAliveClientMixin
); );
}, },
), ),
),
); );
} }

View File

@ -16,7 +16,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev
# 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
# In Windows, build-name is used as the major, minor, and patch parts # In Windows, build-name is used as the major, minor, and patch parts
# of the product and file versions while build-number is used as the build suffix. # of the product and file versions while build-number is used as the build suffix.
version: 1.0.0+1 version: 1.0.1+2
environment: environment:
sdk: '>=3.4.1 <4.0.0' sdk: '>=3.4.1 <4.0.0'

View File

@ -157,6 +157,16 @@
@ -176,7 +186,7 @@
body { body {
margin: 0; margin: 0;
min-height: 100%; min-height: 100%;
background-color: #42a5f5; background-color: #eeeeee;
background-size: 100% 100%; background-size: 100% 100%;
} }