From 97f9e1af3f39b32e9690aceb5c36832f8c364a80 Mon Sep 17 00:00:00 2001 From: machuanyu <840649825@qq.com> Date: Sun, 7 Apr 2024 09:25:09 +0800 Subject: [PATCH] =?UTF-8?q?=E6=88=91=E7=9A=84=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/common/api/retrofit_client.dart | 5 + lib/common/job/work_student.dart | 98 ++++ lib/common/job/work_student_params.dart | 50 ++ .../global_widget/bottom_navigation_bar.dart | 28 +- lib/page/global_widget/other_page.dart | 121 ++++ lib/page/global_widget/start_page.dart | 6 +- lib/page/home_page/children/my_info.dart | 517 +++++++++--------- lib/page/home_page/home_logic.dart | 26 +- lib/page/home_page/home_state.dart | 5 + lib/page/home_page/home_view.dart | 216 +++++++- lib/routes/app_pages.dart | 2 + lib/routes/app_routes.dart | 1 + pubspec.lock | 220 ++++---- 13 files changed, 902 insertions(+), 393 deletions(-) create mode 100644 lib/common/job/work_student.dart create mode 100644 lib/common/job/work_student_params.dart create mode 100644 lib/page/global_widget/other_page.dart diff --git a/lib/common/api/retrofit_client.dart b/lib/common/api/retrofit_client.dart index 1d5a380..2342b1c 100644 --- a/lib/common/api/retrofit_client.dart +++ b/lib/common/api/retrofit_client.dart @@ -1,6 +1,8 @@ import 'package:dio/dio.dart' hide Headers; import 'package:retrofit/retrofit.dart'; import 'package:school_asignment_app/common/job/user_info_detail.dart'; +import 'package:school_asignment_app/common/job/work_student.dart'; +import 'package:school_asignment_app/common/job/work_student_params.dart'; part 'retrofit_client.g.dart'; @@ -14,4 +16,7 @@ abstract class RetrofitClient { @GET("/api/rbac/User/GetUser") Future getUser(@Query('userId') String userId); + + @GET("/api/hms/Homework/GetList") + Future getWorkList(@Queries() WorkStudentParams params); } diff --git a/lib/common/job/work_student.dart b/lib/common/job/work_student.dart new file mode 100644 index 0000000..41ace82 --- /dev/null +++ b/lib/common/job/work_student.dart @@ -0,0 +1,98 @@ +import 'package:json_annotation/json_annotation.dart'; + +part 'work_student.g.dart'; + + +@JsonSerializable() +class WorkStudent extends Object { + + @JsonKey(name: 'items') + List items; + + @JsonKey(name: 'totalCount') + int totalCount; + + WorkStudent(this.items,this.totalCount,); + + factory WorkStudent.fromJson(Map srcJson) => _$WorkStudentFromJson(srcJson); + + Map toJson() => _$WorkStudentToJson(this); + +} + + +@JsonSerializable() +class Items extends Object { + + @JsonKey(name: 'id') + String id; + + @JsonKey(name: 'assessType') + int assessType; + + @JsonKey(name: 'name') + String name; + + @JsonKey(name: 'grade') + int grade; + + @JsonKey(name: 'subject') + int subject; + + @JsonKey(name: 'publishTime') + String publishTime; + + @JsonKey(name: 'state') + int state; + + @JsonKey(name: 'collectRate') + int collectRate; + + @JsonKey(name: 'annotateRate') + int annotateRate; + + @JsonKey(name: 'classes') + List classes; + + @JsonKey(name: 'creatorName') + String creatorName; + + @JsonKey(name: 'creationTime') + String creationTime; + + Items(this.id,this.assessType,this.name,this.grade,this.subject,this.publishTime,this.state,this.collectRate,this.annotateRate,this.classes,this.creatorName,this.creationTime,); + + factory Items.fromJson(Map srcJson) => _$ItemsFromJson(srcJson); + + Map toJson() => _$ItemsToJson(this); + +} + + +@JsonSerializable() +class Classes extends Object { + + @JsonKey(name: 'schoolId') + String schoolId; + + @JsonKey(name: 'schoolName') + String schoolName; + + @JsonKey(name: 'classId') + String classId; + + @JsonKey(name: 'className') + String className; + + @JsonKey(name: 'finishTime') + String finishTime; + + Classes(this.schoolId,this.schoolName,this.classId,this.className,this.finishTime,); + + factory Classes.fromJson(Map srcJson) => _$ClassesFromJson(srcJson); + + Map toJson() => _$ClassesToJson(this); + +} + + diff --git a/lib/common/job/work_student_params.dart b/lib/common/job/work_student_params.dart new file mode 100644 index 0000000..ea6684e --- /dev/null +++ b/lib/common/job/work_student_params.dart @@ -0,0 +1,50 @@ +import 'package:json_annotation/json_annotation.dart'; + +part 'work_student_params.g.dart'; + + +@JsonSerializable() +class WorkStudentParams extends Object { + + @JsonKey(name: 'AssessType') + int assessType; + + @JsonKey(name: 'Name') + String? name; + + @JsonKey(name: 'Grade') + int? grade; + + @JsonKey(name: 'Subject') + int? subject; + + @JsonKey(name: 'State') + int? state; + + @JsonKey(name: 'PublishTimeStart') + String? publishTimeStart; + + @JsonKey(name: 'PublishTimeEnd') + String? publishTimeEnd; + + @JsonKey(name: 'CreatorId') + String? creatorId; + + @JsonKey(name: 'PageNumber') + int pageNumber; + + @JsonKey(name: 'PageSize') + int pageSize; + + @JsonKey(name: 'Sorting') + String? sorting; + + WorkStudentParams({this.assessType = 0,this.name,this.grade,this.subject,this.state,this.publishTimeStart,this.publishTimeEnd,this.creatorId,this.pageNumber = 1,this.pageSize = 10,this.sorting,}); + + factory WorkStudentParams.fromJson(Map srcJson) => _$WorkStudentParamsFromJson(srcJson); + + Map toJson() => _$WorkStudentParamsToJson(this); + +} + + diff --git a/lib/page/global_widget/bottom_navigation_bar.dart b/lib/page/global_widget/bottom_navigation_bar.dart index 3d4d075..af49ca9 100644 --- a/lib/page/global_widget/bottom_navigation_bar.dart +++ b/lib/page/global_widget/bottom_navigation_bar.dart @@ -7,18 +7,24 @@ import 'package:school_asignment_app/routes/app_pages.dart'; const _items = [ { 'id': 1, - 'title': '首页', - 'img': 'assets/images/ic_home_normal.png', - 'activeImg': 'assets/images/ic_home_press.png', - 'route': Routes.home, - 'isBigger': false, - }, - { - 'id': 2, 'title': '作业', 'img': 'assets/images/ic_work_normal.png', 'activeImg': 'assets/images/ic_work_press.png', - 'route': Routes.work, + 'route': Routes.home, + }, + { + 'id': 2, + 'title': '考试', + 'img': 'assets/images/ic_work_normal.png', + 'activeImg': 'assets/images/ic_work_press.png', + 'route': Routes.home, + }, + { + 'id': 3, + 'title': '我的', + 'img': 'assets/images/ic_work_normal.png', + 'activeImg': 'assets/images/ic_work_press.png', + 'route': Routes.myInfo, }, ]; @@ -34,7 +40,7 @@ class MyBottomNavigationBar extends StatelessWidget { return Container( height: 50.r, margin: EdgeInsets.only(bottom: Get.mediaQuery.padding.bottom), - decoration: BoxDecoration( + decoration: const BoxDecoration( color:Colors.white, ), child: Row( @@ -45,7 +51,7 @@ class MyBottomNavigationBar extends StatelessWidget { if (active == e['id']) { return; } - Get.offAllNamed(e['route'] as String); + Get.offAllNamed(e['route'] as String,arguments: e['id']); }, child: Container( width: 60.r, diff --git a/lib/page/global_widget/other_page.dart b/lib/page/global_widget/other_page.dart new file mode 100644 index 0000000..018e405 --- /dev/null +++ b/lib/page/global_widget/other_page.dart @@ -0,0 +1,121 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_screenutil/flutter_screenutil.dart'; +import 'package:get/get.dart'; +import 'package:package_info/package_info.dart'; +import 'package:school_asignment_app/page/global_widget/my_text.dart'; +// 其他页面 + +class OhterPage extends StatefulWidget { + const OhterPage({super.key}); + + @override + State createState() => _OhterPageState(); +} + +class _OhterPageState extends State { + RxString localVersion = ''.obs; + + @override + void initState() { + super.initState(); + getPageInfo(); + } + + // 获取当前版本号 + getPageInfo() async { + PackageInfo packageInfo = await PackageInfo.fromPlatform(); + localVersion.value = packageInfo.version; + } + + @override + Widget build(BuildContext context) { + final personalInfoTitleStly = TextStyle( + color: const Color.fromRGBO(80, 87, 103, 1), + fontSize: 16.sp, + ); + final personalInfoValStly = TextStyle( + color: const Color.fromRGBO(148, 163, 182, 1), + fontSize: 16.sp, + ); + + return Scaffold( + backgroundColor: const Color.fromRGBO(248, 248, 248, 1), + appBar: AppBar( + backgroundColor: Theme.of(context).primaryColor, + title: quickText('其他', color: Colors.white), + ), + body: Stack( + alignment: const FractionalOffset(0.5, 0.98), + children: [ + ListView( + children: [ + Container( + margin: EdgeInsets.symmetric(vertical: 22.h, horizontal: 16.w), + padding: EdgeInsets.symmetric(vertical: 22.h, horizontal: 16.w), + height: 130.h, + decoration: BoxDecoration( + borderRadius: BorderRadius.all(Radius.circular(6.w)), + color: Colors.white, + boxShadow: const [ + BoxShadow( + color: Color.fromRGBO(46, 91, 255, 0.1), + offset: Offset.zero, //阴影y轴偏移量 + blurRadius: 20, //阴影模糊程度 + spreadRadius: 10, //阴影扩散程度 + ) + ], + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + InkWell( + onTap: () { + /* RouterManager.router.navigateTo( + context, + transition: TransitionType.fadeIn, + '${RouterManager.agreementPath}?type=${AGREEMENT_KEY.PRIVACY_GREEMENT.name}', + );*/ + }, + child: Container( + padding: EdgeInsets.only(bottom: 4.h), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text('用户隐私协议', style: personalInfoTitleStly), + Icon( + Icons.arrow_forward_ios, + color: const Color.fromRGBO(80, 87, 103, 1), + size: 16.sp, + ) + ], + ), + ), + ), + Container( + height: 1.w, + color: const Color.fromRGBO(240, 243, 255, 1), + ), + SizedBox(height: 8.h), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text('APP版本', style: personalInfoTitleStly), + Obx(() { + return quickText(localVersion); + }) + ], + ) + ], + ), + ), + ], + ), + Row( + mainAxisSize: MainAxisSize.min, + mainAxisAlignment: MainAxisAlignment.center, + children: [Text('APP备案号: ', style: personalInfoTitleStly), quickText('渝ICP备17007225号-3A', size: 14.sp)], + ), + ], + )); + } +} diff --git a/lib/page/global_widget/start_page.dart b/lib/page/global_widget/start_page.dart index ab06017..6688a72 100644 --- a/lib/page/global_widget/start_page.dart +++ b/lib/page/global_widget/start_page.dart @@ -17,15 +17,15 @@ class _StartPageState extends State { @override void initState() { super.initState(); - String? token = StorageService.to.read(AppStorageKey.STORAGE_USER_TOKEN); + String? token = StorageService.to.read(AppStorageKey.token.value); UserInfo? userInfo; try { - var userInfoJson = StorageService.to.read(AppStorageKey.STORAGE_USER_INFO); + var userInfoJson = StorageService.to.read(AppStorageKey.userInfo.value); if (userInfoJson != null) { userInfo = UserInfo.fromJson(userInfoJson); } } catch (err) { - StorageService.to.remove(AppStorageKey.STORAGE_USER_INFO); + StorageService.to.remove(AppStorageKey.userInfo.value); } if ((token?.isNotEmpty ?? false) && userInfo != null) { diff --git a/lib/page/home_page/children/my_info.dart b/lib/page/home_page/children/my_info.dart index 2760979..b90cc64 100644 --- a/lib/page/home_page/children/my_info.dart +++ b/lib/page/home_page/children/my_info.dart @@ -3,8 +3,11 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; +import 'package:school_asignment_app/common/job/user_info.dart'; import 'package:school_asignment_app/common/store/app_storage_key.dart'; +import 'package:school_asignment_app/common/store/user_store.dart'; import 'package:school_asignment_app/common/utils/storage.dart'; +import 'package:school_asignment_app/page/global_widget/global_scaffold.dart'; import 'package:school_asignment_app/page/global_widget/my_text.dart'; import 'package:school_asignment_app/page/home_page/home_logic.dart'; import 'package:cached_network_image/cached_network_image.dart'; @@ -12,8 +15,7 @@ import 'package:school_asignment_app/routes/app_pages.dart'; class MyInfo extends StatelessWidget { MyInfo({Key? key}) : super(key: key); - final controller = Get.find; - final state = Get.find().state; + late Rx userInfo = UserStore.to.userInfo; // 确认对话框 _showAlertDialog(context1) async { @@ -36,8 +38,8 @@ class MyInfo extends StatelessWidget { ref.read(markingSubtopicSwitchingProvider.notifier).clean(); ref.read(userTokenProvider.notifier).clean(); ref.read(userProvider.notifier).clean();*/ - StorageService.to.remove(AppStorageKey.STORAGE_USER_TOKEN); - StorageService.to.remove(AppStorageKey.STORAGE_USER_INFO); + StorageService.to.remove(AppStorageKey.token.value); + StorageService.to.remove(AppStorageKey.userInfo.value); Navigator.pop(context, "Ok"); Get.offAllNamed(Routes.login); }) @@ -56,271 +58,264 @@ class MyInfo extends StatelessWidget { fontSize: 16.sp, ); - return AnnotatedRegion( - value: const SystemUiOverlayStyle( - statusBarColor: Colors.transparent, - systemNavigationBarIconBrightness: Brightness.light, - statusBarIconBrightness: Brightness.light, - statusBarBrightness: Brightness.dark, - ), - child: Stack( - children: [ - SizedBox( - height: double.infinity, - child: Column( - children: [ - Container( - height: 240.h, - width: double.infinity, - decoration: const BoxDecoration( - image: DecorationImage( - image: AssetImage('assets/images/personal_bgi.png'), - fit: BoxFit.cover, - ), - ), - ), - Expanded( - child: Container( - color: const Color.fromRGBO(248, 248, 248, 1), - )) - ], - ), - ), - SafeArea( - child: Scaffold( - backgroundColor: Colors.transparent, - body: Column( + return GlobalScaffold( + active: 3, + body: AnnotatedRegion( + value: const SystemUiOverlayStyle( + statusBarColor: Colors.transparent, + systemNavigationBarIconBrightness: Brightness.light, + statusBarIconBrightness: Brightness.light, + statusBarBrightness: Brightness.dark, + ), + child: Stack( + children: [ + SizedBox( + height: double.infinity, + child: Column( children: [ - Stack( - alignment: const FractionalOffset(0.04, 0.1), - children: [ - Container( - height: 200.h, - alignment: Alignment.center, - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - ClipRRect( - borderRadius: BorderRadius.circular(80.w), - child: Container( - width: 80.w, - height: 80.w, - padding: EdgeInsets.all(4.w), - decoration: BoxDecoration( - border: Border.all( - width: 1.w, - color: Colors.white, - ), - borderRadius: BorderRadius.all( - Radius.circular(40.w), - ), - boxShadow: [ - BoxShadow( - color: const Color.fromRGBO(46, 91, 255, 0.2), - offset: Offset(4.w, 6.h), //阴影y轴偏移量 - blurRadius: 8, //阴影模糊程度 - spreadRadius: 0.2, //阴影扩散程度 - ) - ], - ), - child: CachedNetworkImage( - fit: BoxFit.cover, - imageUrl:'', - placeholder: (context, url) => Image.asset('assets/images/default_user_dead.png'), - errorWidget: (context, url, error) => - Image.asset('assets/images/default_user_dead.png'), - ), - ), - ), - InkWell( - onTap: () { - /*if (tokenState == '' || userState.id == '') { - toLoginPage(context); - }*/ - }, - child: Container( - margin: EdgeInsets.only(top: 16.h), - child: Text( - state.userInfo.value!.givenname != '' ? state.userInfo.value!.givenname : '请前往登录', - style: TextStyle(fontSize: 16.sp, color: Colors.white), - ), - ), - ), - ], - ), - ), - InkWell( - onTap: () => Get.back(), - child: Icon(Icons.arrow_back_ios_new_rounded, color: Colors.white, size: 24.sp), - ), - ], - ), - SizedBox(height: 14.h), Container( - margin: EdgeInsets.symmetric(vertical: 22.h, horizontal: 16.w), - padding: EdgeInsets.symmetric(vertical: 22.h, horizontal: 16.w), - height: 310.h, - decoration: BoxDecoration( - borderRadius: BorderRadius.all(Radius.circular(6.w)), - color: Colors.white, - boxShadow: const [ - BoxShadow( - color: Color.fromRGBO(46, 91, 255, 0.1), - offset: Offset.zero, //阴影y轴偏移量 - blurRadius: 20, //阴影模糊程度 - spreadRadius: 10, //阴影扩散程度 - ) - ], - ), - child: Column( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Text('账号', style: personalInfoTitleStly), - Text(state.userInfo.value!.givenname, style: personalInfoValStly) - ], - ), - Container( - height: 1.w, - color: const Color.fromRGBO(240, 243, 255, 1), - ), - /* Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Text('所在学校', style: personalInfoTitleStly), - Text(userState.schoolName, style: personalInfoValStly) - ], - ), - Container( - height: 1.w, - color: const Color.fromRGBO(240, 243, 255, 1), - ), - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Text('担任职位', style: personalInfoTitleStly), - SizedBox(width: 20.w), - Expanded( - child: Text( - userState.positionNames.map((e) => e).toList().join(','), - maxLines: 2, - textAlign: TextAlign.right, - overflow: TextOverflow.ellipsis, - style: personalInfoValStly, - ), - ) - ], - ), - Container(height: 1.w, color: const Color.fromRGBO(240, 243, 255, 1)), - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Text('所授科目', style: personalInfoTitleStly), - Expanded( - child: Text( - userState.subjectIds.map((e) => getSubjectEnumName(e)).toList().join(','), - maxLines: 2, - textAlign: TextAlign.right, - overflow: TextOverflow.ellipsis, - style: personalInfoValStly, - ), - ) - ], - ), - Container(height: 1.w, color: const Color.fromRGBO(240, 243, 255, 1)), - Padding( - padding: EdgeInsets.only(top: 10.h), - child: InkWell( - onTap: () { - RouterManager.router.navigateTo( - context, - RouterManager.ohterMainPagePath, - transition: TransitionType.custom, - transitionBuilder: (context, animation, secondaryAnimation, child) { - return SkewTransition( - turns: Tween( - begin: -0.06, - end: 0.0, - ).animate(animation), - child: child); - }, - ); - }, - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Text('其他', style: personalInfoTitleStly), - Icon( - Icons.arrow_forward_ios, - color: const Color.fromRGBO(80, 87, 103, 1), - size: 16.sp, - ) - ], - ), - ), - )*/ - ], + height: 240.h, + width: double.infinity, + decoration: const BoxDecoration( + image: DecorationImage( + image: AssetImage('assets/images/personal_bgi.png'), + fit: BoxFit.cover, + ), ), ), Expanded( - child: Column( - children: [ - const Expanded(child: SizedBox()), - Container( - margin: EdgeInsets.only(bottom: 40.h), - alignment: Alignment.bottomCenter, - child: InkWell( - child: Container( - padding: EdgeInsets.symmetric(vertical: 14.h), - margin: EdgeInsets.only(right: 16.w, left: 16.w), - decoration: BoxDecoration( - borderRadius: BorderRadius.all( - Radius.circular(6.w), - ), - color: Colors.white, - boxShadow: [ - BoxShadow( - color: const Color.fromRGBO(46, 91, 255, 0.2), - offset: Offset(2.w, 2.h), //阴影y轴偏移量 - blurRadius: 14, //阴影模糊程度 - spreadRadius: 0.5, //阴影扩散程度 - ) - ], - ), - child: Row( - crossAxisAlignment: CrossAxisAlignment.center, - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Icon( - Icons.exit_to_app_outlined, - size: 16.sp, - color: const Color.fromRGBO(148, 163, 182, 1), - ), - Container( - width: 6.w, - ), - Text( - '退出登录', - style: TextStyle(color: const Color.fromRGBO(148, 163, 182, 1), fontSize: 16.sp), - ), - ], - ), - ), - onTap: () { - _showAlertDialog(context); - }, - ), - ), - ], - ), - ), + child: Container( + color: const Color.fromRGBO(248, 248, 248, 1), + )) ], ), ), - ), - ], + SafeArea( + child: Scaffold( + backgroundColor: Colors.transparent, + body: Column( + children: [ + Stack( + alignment: const FractionalOffset(0.04, 0.1), + children: [ + Container( + height: 200.h, + alignment: Alignment.center, + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(80.w), + child: Container( + width: 80.w, + height: 80.w, + padding: EdgeInsets.all(4.w), + decoration: BoxDecoration( + border: Border.all( + width: 1.w, + color: Colors.white, + ), + borderRadius: BorderRadius.all( + Radius.circular(40.w), + ), + boxShadow: [ + BoxShadow( + color: const Color.fromRGBO(46, 91, 255, 0.2), + offset: Offset(4.w, 6.h), //阴影y轴偏移量 + blurRadius: 8, //阴影模糊程度 + spreadRadius: 0.2, //阴影扩散程度 + ) + ], + ), + child: Image.asset('assets/images/default_user_dead.png') + + /* CachedNetworkImage( + fit: BoxFit.cover, + imageUrl:'', + placeholder: (context, url) => Image.asset('assets/images/default_user_dead.png'), + errorWidget: (context, url, error) => + Image.asset('assets/images/default_user_dead.png'), + ),*/ + ), + ), + InkWell( + onTap: () { + /*if (tokenState == '' || userState.id == '') { + toLoginPage(context); + }*/ + }, + child: Container( + margin: EdgeInsets.only(top: 16.h), + child: Text( + userInfo.value!.givenname != '' ? userInfo.value!.givenname : '请前往登录', + style: TextStyle(fontSize: 16.sp, color: Colors.white), + ), + ), + ), + ], + ), + ), + /* InkWell( + onTap: () => Get.back(), + child: Icon(Icons.arrow_back_ios_new_rounded, color: Colors.white, size: 24.sp), + ),*/ + ], + ), + SizedBox(height: 14.h), + Container( + margin: EdgeInsets.symmetric(vertical: 22.h, horizontal: 16.w), + padding: EdgeInsets.symmetric(vertical: 22.h, horizontal: 16.w), + height: 310.h, + decoration: BoxDecoration( + borderRadius: BorderRadius.all(Radius.circular(6.w)), + color: Colors.white, + boxShadow: const [ + BoxShadow( + color: Color.fromRGBO(46, 91, 255, 0.1), + offset: Offset.zero, //阴影y轴偏移量 + blurRadius: 20, //阴影模糊程度 + spreadRadius: 10, //阴影扩散程度 + ) + ], + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text('账号', style: personalInfoTitleStly), + Text(userInfo.value!.givenname, style: personalInfoValStly) + ], + ), + Container( + height: 1.w, + color: const Color.fromRGBO(240, 243, 255, 1), + ), + /* Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text('所在学校', style: personalInfoTitleStly), + Text(userState.schoolName, style: personalInfoValStly) + ], + ), + Container( + height: 1.w, + color: const Color.fromRGBO(240, 243, 255, 1), + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text('担任职位', style: personalInfoTitleStly), + SizedBox(width: 20.w), + Expanded( + child: Text( + userState.positionNames.map((e) => e).toList().join(','), + maxLines: 2, + textAlign: TextAlign.right, + overflow: TextOverflow.ellipsis, + style: personalInfoValStly, + ), + ) + ], + ), + Container(height: 1.w, color: const Color.fromRGBO(240, 243, 255, 1)), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text('所授科目', style: personalInfoTitleStly), + Expanded( + child: Text( + userState.subjectIds.map((e) => getSubjectEnumName(e)).toList().join(','), + maxLines: 2, + textAlign: TextAlign.right, + overflow: TextOverflow.ellipsis, + style: personalInfoValStly, + ), + ) + ], + ),*/ + Container(height: 1.w, color: const Color.fromRGBO(240, 243, 255, 1)), + Padding( + padding: EdgeInsets.only(top: 10.h), + child: InkWell( + onTap: () { + Get.toNamed(Routes.otherPage); + }, + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text('其他', style: personalInfoTitleStly), + Icon( + Icons.arrow_forward_ios, + color: const Color.fromRGBO(80, 87, 103, 1), + size: 16.sp, + ) + ], + ), + ), + ) + ], + ), + ), + Expanded( + child: Column( + children: [ + const Expanded(child: SizedBox()), + Container( + margin: EdgeInsets.only(bottom: 40.h), + alignment: Alignment.bottomCenter, + child: InkWell( + child: Container( + padding: EdgeInsets.symmetric(vertical: 14.h), + margin: EdgeInsets.only(right: 16.w, left: 16.w), + decoration: BoxDecoration( + borderRadius: BorderRadius.all( + Radius.circular(6.w), + ), + color: Colors.white, + boxShadow: [ + BoxShadow( + color: const Color.fromRGBO(46, 91, 255, 0.2), + offset: Offset(2.w, 2.h), //阴影y轴偏移量 + blurRadius: 14, //阴影模糊程度 + spreadRadius: 0.5, //阴影扩散程度 + ) + ], + ), + child: Row( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Icon( + Icons.exit_to_app_outlined, + size: 16.sp, + color: const Color.fromRGBO(148, 163, 182, 1), + ), + Container( + width: 6.w, + ), + Text( + '退出登录', + style: TextStyle(color: const Color.fromRGBO(148, 163, 182, 1), fontSize: 16.sp), + ), + ], + ), + ), + onTap: () { + _showAlertDialog(context); + }, + ), + ), + ], + ), + ), + ], + ), + ), + ), + ], + ), ), ); } diff --git a/lib/page/home_page/home_logic.dart b/lib/page/home_page/home_logic.dart index ffbb6ff..8d7b484 100644 --- a/lib/page/home_page/home_logic.dart +++ b/lib/page/home_page/home_logic.dart @@ -1,15 +1,37 @@ +import 'package:flutter/material.dart'; import 'package:get/get.dart'; +import 'package:get_storage/get_storage.dart'; +import 'package:school_asignment_app/common/job/work_student.dart'; +import 'package:school_asignment_app/common/job/work_student_params.dart'; +import 'package:school_asignment_app/common/mixins/request_tool_mixin.dart'; import 'package:school_asignment_app/common/store/user_store.dart'; import 'home_state.dart'; -class HomeLogic extends GetxController { +class HomeLogic extends GetxController with RequestToolMixin,GetTickerProviderStateMixin{ final HomeState state = HomeState(); + late TabController tabController; @override void onInit(){ super.onInit(); state.userInfo = UserStore.to.userInfo; - print(state.userInfo.value.obs); + state.active = Get.arguments ?? 1; + tabController = TabController( + length: 2, + vsync: this, + ); + print('state.active=${state.active}'); + getList(); + } + void getList() async{ + WorkStudentParams params = WorkStudentParams(assessType: 0,); + WorkStudent data = await getClient().getWorkList(params); + state.workList.value = data.items; + } + @override + void dispose(){ + super.dispose(); + tabController.dispose(); } } diff --git a/lib/page/home_page/home_state.dart b/lib/page/home_page/home_state.dart index 2ad292a..f4ccff5 100644 --- a/lib/page/home_page/home_state.dart +++ b/lib/page/home_page/home_state.dart @@ -1,3 +1,4 @@ +import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:school_asignment_app/common/job/user_info.dart'; @@ -7,4 +8,8 @@ class HomeState { } late Rx userInfo; + int active = 1; + late RxList workList = RxList(); + late RxInt tabIndex = 0.obs; + late bool completedToRefresh = true; } diff --git a/lib/page/home_page/home_view.dart b/lib/page/home_page/home_view.dart index e8df097..5751a8c 100644 --- a/lib/page/home_page/home_view.dart +++ b/lib/page/home_page/home_view.dart @@ -1,9 +1,12 @@ import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; +import 'package:get_storage/get_storage.dart'; import 'package:school_asignment_app/common/store/app_storage_key.dart'; import 'package:school_asignment_app/common/utils/storage.dart'; import 'package:school_asignment_app/page/global_widget/global_scaffold.dart'; +import 'package:school_asignment_app/page/global_widget/my_text.dart'; import 'package:school_asignment_app/page/home_page/widget/top_user_info.dart'; import 'package:school_asignment_app/routes/app_pages.dart'; @@ -18,16 +21,217 @@ class HomePage extends StatefulWidget { class _HomePageState extends State { final logic = Get.find(); - final state = Get.find().state; + final state = Get + .find() + .state; @override Widget build(BuildContext context) { return GlobalScaffold( - active: 1, - body: Column( - children: [ - TopUserInfo(), - ], + active: state.active, + body: AnnotatedRegion( + value: const SystemUiOverlayStyle( + systemNavigationBarColor: Color(0xFF000000), + systemNavigationBarDividerColor: null, + statusBarColor: Colors.white, + systemNavigationBarIconBrightness: Brightness.light, + statusBarIconBrightness: Brightness.dark, + statusBarBrightness: Brightness.light, + ), + child: Scaffold( + backgroundColor: const Color.fromRGBO(244, 244, 244, 1), + body: OrientationBuilder( + builder: (BuildContext context, Orientation orientation) { + return Column( + children: [ + Container( + color: Colors.white, + margin: EdgeInsets.only(top: MediaQuery + .of(context) + .padding + .top), + padding: EdgeInsets.only(bottom: 9.h, top: 4.h), + child: Row( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Expanded(flex: 1, child: SizedBox()), + Expanded( + flex: 4, + child: Container( + padding: EdgeInsets.symmetric(vertical: 2.h), + alignment: Alignment.center, + decoration: BoxDecoration( + color: const Color.fromRGBO(243, 243, 243, 1), + borderRadius: BorderRadius.circular(8.r), + ), + child: TabBar( + padding: EdgeInsets.zero, + indicatorPadding: EdgeInsets.zero, + indicatorWeight: 0, + labelPadding: EdgeInsets.symmetric( + horizontal: 2.w), + controller: logic.tabController, + unselectedLabelStyle: TextStyle( + fontSize: 14.sp, + color: const Color.fromRGBO(69, 83, 100, 1), + ), + labelStyle: TextStyle( + fontSize: 14.sp, + color: const Color.fromRGBO(104, 136, 253, 1), + ), + // labelColor: const Color.fromRGBO(45, 56, 76, 1), + indicator: const BoxDecoration(), + onTap: (index) { + state.tabIndex.value = index; + if (index == 1 && state.completedToRefresh) { + // 已阅卷 + // _refreshController2.callRefresh(); + state.completedToRefresh = false; + } + }, + tabs: [ + Tab( + iconMargin: EdgeInsets.zero, + height: 34.h, + child: Obx(() { + return Container( + width: 140.w, + alignment: Alignment.center, + decoration: BoxDecoration( + color: state.tabIndex.value == 0 + ? const Color.fromRGBO( + 255, 255, 255, 1) + : null, + borderRadius: BorderRadius.all( + Radius.circular(8.r)), + ), + child: quickText( + '待批阅', + size: 14.sp, + color: state.tabIndex.value == 0 + ? Theme + .of(context) + .primaryColor + : const Color.fromRGBO( + 80, 94, 110, 1), + fontWeight: state.tabIndex.value == 0 + ? FontWeight.bold + : null, + ), + ); + }), + ), + Tab( + iconMargin: EdgeInsets.zero, + height: 34.h, + child: Obx(() { + return Container( + width: 140.w, + alignment: Alignment.center, + decoration: BoxDecoration( + color: state.tabIndex.value == 1 + ? const Color.fromRGBO( + 255, 255, 255, 1) + : null, + borderRadius: BorderRadius.all( + Radius.circular(8.r)), + ), + child: quickText( + '已批阅', + size: 14.sp, + color: state.tabIndex.value == 1 + ? Theme + .of(context) + .primaryColor + : const Color.fromRGBO( + 80, 94, 110, 1), + fontWeight: state.tabIndex.value == 1 + ? FontWeight + .bold + : null, + ), + ); + }), + ), + ], + ), + ), + ), + Expanded( + flex: 1, + child: InkWell( + onTap: () { + /* RouterManager.router + .navigateTo( + context, RouterManager.jobStudentGroupPath, + transition: getTransition());*/ + }, + child: Icon( + IconData(0xe63e, fontFamily: "AlibabaIcon"), + color: Color.fromRGBO(44, 48, 63, 1), + size: 24.sp), + ), + ), + ], + ), + ), + /* if (state.tabIndex.value == 1) + $CompletedJobConditionFilter( + controller: _tabController2, + jobType: params2.markingType ?? 1, + customTime: _tabController2.index != 3 || + (params2.startTime == null && params2.endTime == null) + ? null + : PickerDateRange( + params2.startTime == null ? null : DateTime.parse( + params2.startTime!), + params2.endTime == null ? null : DateTime.parse(params2 + .endTime!), + ), + onJobTypeTap: (int jobTypeVal) { + params2.markingType = jobTypeVal; + _refreshController2.callRefresh(); + }, + onTimeFilter: (String? startTime, String? endTime) { + if (startTime == null && endTime == null && + _tabController2.index == 3) { + _tabController2.animateTo(0); + } + params2.endTime = endTime; + params2.startTime = startTime; + _refreshController2.callRefresh(); + }, + ),*/ + /* Expanded( + child: Obx(() { + return IndexedStack( + index: state.tabIndex.value, + children: [ + $EasyRefresh( + controller: _refreshController1, + params: params1, + tab: 1, + data: markingDatas1, + onLoad: onMyLoad, + onRefresh: onMyRefresh, + ), + $EasyRefresh( + controller: _refreshController2, + params: params2, + tab: 2, + data: markingDatas2, + onLoad: onMyLoad, + onRefresh: onMyRefresh, + ), + ], + ); + }), + ),*/ + ], + ); + }, + ), + ), ), ); } diff --git a/lib/routes/app_pages.dart b/lib/routes/app_pages.dart index ca21922..89871ee 100644 --- a/lib/routes/app_pages.dart +++ b/lib/routes/app_pages.dart @@ -1,4 +1,5 @@ import 'package:get/get.dart'; +import 'package:school_asignment_app/page/global_widget/other_page.dart'; import 'package:school_asignment_app/page/global_widget/start_page.dart'; import 'package:school_asignment_app/page/home_page/children/my_info.dart'; import 'package:school_asignment_app/page/home_page/home_binding.dart'; @@ -17,5 +18,6 @@ static final pages=[ GetPage(name: Routes.startPage, page: () => const StartPage(), transition: Transition.noTransition), GetPage(name: Routes.myInfo, page: () => MyInfo(), transition: Transition.noTransition), GetPage(name: Routes.work, page: () => const WorkPage(), binding: WorkBinding(), transition: Transition.noTransition), + GetPage(name: Routes.otherPage, page: () => const OhterPage(), transition: Transition.noTransition), ]; } \ No newline at end of file diff --git a/lib/routes/app_routes.dart b/lib/routes/app_routes.dart index 655aeef..3a04e3d 100644 --- a/lib/routes/app_routes.dart +++ b/lib/routes/app_routes.dart @@ -7,4 +7,5 @@ abstract class Routes { static const startPage = '/startPage'; static const myInfo = '/myInfo'; static const work = '/work'; + static const otherPage = '/otherPage'; } \ No newline at end of file diff --git a/pubspec.lock b/pubspec.lock index 6cdc55a..2c96fb0 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -6,7 +6,7 @@ packages: description: name: _fe_analyzer_shared sha256: eb376e9acf6938204f90eb3b1f00b578640d3188b4c8a8ec054f9f479af8d051 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "64.0.0" analyzer: @@ -14,7 +14,7 @@ packages: description: name: analyzer sha256: "69f54f967773f6c26c7dcb13e93d7ccee8b17a641689da39e878d5cf13b06893" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "6.2.0" args: @@ -22,7 +22,7 @@ packages: description: name: args sha256: eef6c46b622e0494a36c5a12d10d77fb4e855501a91c1b9ef9339326e58f0596 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.4.2" async: @@ -30,7 +30,7 @@ packages: description: name: async sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.11.0" boolean_selector: @@ -38,7 +38,7 @@ packages: description: name: boolean_selector sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.1.1" build: @@ -46,7 +46,7 @@ packages: description: name: build sha256: "80184af8b6cb3e5c1c4ec6d8544d27711700bc3e6d2efad04238c7b5290889f0" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.4.1" build_config: @@ -54,7 +54,7 @@ packages: description: name: build_config sha256: bf80fcfb46a29945b423bd9aad884590fb1dc69b330a4d4700cac476af1708d1 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.1.1" build_daemon: @@ -62,7 +62,7 @@ packages: description: name: build_daemon sha256: "0343061a33da9c5810b2d6cee51945127d8f4c060b7fbdd9d54917f0a3feaaa1" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "4.0.1" build_resolvers: @@ -70,7 +70,7 @@ packages: description: name: build_resolvers sha256: "339086358431fa15d7eca8b6a36e5d783728cf025e559b834f4609a1fcfb7b0a" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.4.2" build_runner: @@ -78,7 +78,7 @@ packages: description: name: build_runner sha256: "3ac61a79bfb6f6cc11f693591063a7f19a7af628dc52f141743edac5c16e8c22" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.4.9" build_runner_core: @@ -86,7 +86,7 @@ packages: description: name: build_runner_core sha256: "4ae8ffe5ac758da294ecf1802f2aff01558d8b1b00616aa7538ea9a8a5d50799" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "7.3.0" built_collection: @@ -94,7 +94,7 @@ packages: description: name: built_collection sha256: "376e3dd27b51ea877c28d525560790aee2e6fbb5f20e2f85d5081027d94e2100" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "5.1.1" built_value: @@ -102,7 +102,7 @@ packages: description: name: built_value sha256: fedde275e0a6b798c3296963c5cd224e3e1b55d0e478d5b7e65e6b540f363a0e - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "8.9.1" cached_network_image: @@ -110,7 +110,7 @@ packages: description: name: cached_network_image sha256: "28ea9690a8207179c319965c13cd8df184d5ee721ae2ce60f398ced1219cea1f" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "3.3.1" cached_network_image_platform_interface: @@ -118,7 +118,7 @@ packages: description: name: cached_network_image_platform_interface sha256: "9e90e78ae72caa874a323d78fa6301b3fb8fa7ea76a8f96dc5b5bf79f283bf2f" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "4.0.0" cached_network_image_web: @@ -126,7 +126,7 @@ packages: description: name: cached_network_image_web sha256: "42a835caa27c220d1294311ac409a43361088625a4f23c820b006dd9bffb3316" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.1.1" characters: @@ -134,7 +134,7 @@ packages: description: name: characters sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.3.0" checked_yaml: @@ -142,7 +142,7 @@ packages: description: name: checked_yaml sha256: feb6bed21949061731a7a75fc5d2aa727cf160b91af9a3e464c5e3a32e28b5ff - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.0.3" clock: @@ -150,7 +150,7 @@ packages: description: name: clock sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.1.1" code_builder: @@ -158,7 +158,7 @@ packages: description: name: code_builder sha256: f692079e25e7869c14132d39f223f8eec9830eb76131925143b2129c4bb01b37 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "4.10.0" collection: @@ -166,7 +166,7 @@ packages: description: name: collection sha256: "4a07be6cb69c84d677a6c3096fcf960cc3285a8330b4603e0d463d15d9bd934c" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.17.1" connectivity_plus: @@ -174,7 +174,7 @@ packages: description: name: connectivity_plus sha256: b74247fad72c171381dbe700ca17da24deac637ab6d43c343b42867acb95c991 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "3.0.6" connectivity_plus_platform_interface: @@ -182,7 +182,7 @@ packages: description: name: connectivity_plus_platform_interface sha256: cf1d1c28f4416f8c654d7dc3cd638ec586076255d407cef3ddbdaf178272a71a - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.2.4" convert: @@ -190,7 +190,7 @@ packages: description: name: convert sha256: "0f08b14755d163f6e2134cb58222dd25ea2a2ee8a195e53983d57c075324d592" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "3.1.1" crypto: @@ -198,7 +198,7 @@ packages: description: name: crypto sha256: ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "3.0.3" csslib: @@ -206,7 +206,7 @@ packages: description: name: csslib sha256: "706b5707578e0c1b4b7550f64078f0a0f19dec3f50a178ffae7006b0a9ca58fb" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.0.0" cupertino_icons: @@ -214,7 +214,7 @@ packages: description: name: cupertino_icons sha256: d57953e10f9f8327ce64a508a355f0b1ec902193f66288e8cb5070e7c47eeb2d - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.0.6" dart_style: @@ -222,7 +222,7 @@ packages: description: name: dart_style sha256: "99e066ce75c89d6b29903d788a7bb9369cf754f7b24bf70bf4b6d6d6b26853b9" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.3.6" dbus: @@ -230,7 +230,7 @@ packages: description: name: dbus sha256: "365c771ac3b0e58845f39ec6deebc76e3276aa9922b0cc60840712094d9047ac" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.7.10" dio: @@ -238,7 +238,7 @@ packages: description: name: dio sha256: "0978e9a3e45305a80a7210dbeaf79d6ee8bee33f70c8e542dc654c952070217f" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "5.4.2+1" fake_async: @@ -246,7 +246,7 @@ packages: description: name: fake_async sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.3.1" ffi: @@ -254,7 +254,7 @@ packages: description: name: ffi sha256: "7bf0adc28a23d395f19f3f1eb21dd7cfd1dd9f8e1c50051c069122e6853bc878" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.1.0" file: @@ -262,7 +262,7 @@ packages: description: name: file sha256: "5fc22d7c25582e38ad9a8515372cd9a93834027aacf1801cf01164dac0ffa08c" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "7.0.0" fixnum: @@ -270,7 +270,7 @@ packages: description: name: fixnum sha256: "25517a4deb0c03aa0f32fd12db525856438902d9c16536311e76cdc57b31d7d1" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.1.0" flutter: @@ -283,7 +283,7 @@ packages: description: name: flutter_cache_manager sha256: "8207f27539deb83732fdda03e259349046a39a4c767269285f449ade355d54ba" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "3.3.1" flutter_easyloading: @@ -291,7 +291,7 @@ packages: description: name: flutter_easyloading sha256: ba21a3c883544e582f9cc455a4a0907556714e1e9cf0eababfcb600da191d17c - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "3.0.5" flutter_easyrefresh: @@ -299,7 +299,7 @@ packages: description: name: flutter_easyrefresh sha256: "5d161ee5dcac34da9065116568147d742dd25fb9bff3b10024d9054b195087ad" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.2.2" flutter_lints: @@ -307,7 +307,7 @@ packages: description: name: flutter_lints sha256: a25a15ebbdfc33ab1cd26c63a6ee519df92338a9c10f122adda92938253bef04 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.0.3" flutter_screenutil: @@ -315,7 +315,7 @@ packages: description: name: flutter_screenutil sha256: "0a122936b450324cbdfd51be0819cc6fcebb093eb65585e9cd92263f7a1a8a39" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "5.7.0" flutter_spinkit: @@ -323,7 +323,7 @@ packages: description: name: flutter_spinkit sha256: d2696eed13732831414595b98863260e33e8882fc069ee80ec35d4ac9ddb0472 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "5.2.1" flutter_test: @@ -341,7 +341,7 @@ packages: description: name: flutter_widget_from_html_core sha256: "22140caa191cb4bba0fe4d5e4ad875c7e8a9ba47d61517f56d733019cf76396d" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.10.6" fluttertoast: @@ -349,7 +349,7 @@ packages: description: name: fluttertoast sha256: dfdde255317af381bfc1c486ed968d5a43a2ded9c931e87cbecd88767d6a71c1 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "8.2.4" frontend_server_client: @@ -357,7 +357,7 @@ packages: description: name: frontend_server_client sha256: f64a0333a82f30b0cca061bc3d143813a486dc086b574bfb233b7c1372427694 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "4.0.0" functional_widget_annotation: @@ -365,7 +365,7 @@ packages: description: name: functional_widget_annotation sha256: f0612079cb7e226b7be32b473bdaf85fe680370886c0c13ea69a102ccc17a0c7 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.10.0" get: @@ -373,7 +373,7 @@ packages: description: name: get sha256: "2ba20a47c8f1f233bed775ba2dd0d3ac97b4cf32fc17731b3dfc672b06b0e92a" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "4.6.5" get_storage: @@ -381,7 +381,7 @@ packages: description: name: get_storage sha256: "39db1fffe779d0c22b3a744376e86febe4ade43bf65e06eab5af707dc84185a2" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.1.1" glob: @@ -389,7 +389,7 @@ packages: description: name: glob sha256: "0e7014b3b7d4dac1ca4d6114f82bf1782ee86745b9b42a92c9289c23d8a0ab63" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.1.2" graphs: @@ -397,7 +397,7 @@ packages: description: name: graphs sha256: aedc5a15e78fc65a6e23bcd927f24c64dd995062bcd1ca6eda65a3cff92a4d19 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.3.1" html: @@ -405,7 +405,7 @@ packages: description: name: html sha256: "3a7812d5bcd2894edf53dfaf8cd640876cf6cef50a8f238745c8b8120ea74d3a" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.15.4" http: @@ -413,7 +413,7 @@ packages: description: name: http sha256: "759d1a329847dd0f39226c688d3e06a6b8679668e350e2891a6474f8b4bb8525" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.1.0" http_multi_server: @@ -421,7 +421,7 @@ packages: description: name: http_multi_server sha256: "97486f20f9c2f7be8f514851703d0119c3596d14ea63227af6f7a481ef2b2f8b" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "3.2.1" http_parser: @@ -429,7 +429,7 @@ packages: description: name: http_parser sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "4.0.2" io: @@ -437,7 +437,7 @@ packages: description: name: io sha256: "2ec25704aba361659e10e3e5f5d672068d332fc8ac516421d483a11e5cbd061e" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.0.4" js: @@ -445,7 +445,7 @@ packages: description: name: js sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.6.7" json_annotation: @@ -453,7 +453,7 @@ packages: description: name: json_annotation sha256: b10a7b2ff83d83c777edba3c6a0f97045ddadd56c944e1a23a3fdf43a1bf4467 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "4.8.1" json_serializable: @@ -461,7 +461,7 @@ packages: description: name: json_serializable sha256: aa1f5a8912615733e0fdc7a02af03308933c93235bdc8d50d0b0c8a8ccb0b969 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "6.7.1" lints: @@ -469,7 +469,7 @@ packages: description: name: lints sha256: "0a217c6c989d21039f1498c3ed9f3ed71b354e69873f13a8dfc3c9fe76f1b452" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.1.1" logger: @@ -477,7 +477,7 @@ packages: description: name: logger sha256: "7ad7215c15420a102ec687bb320a7312afd449bac63bfb1c60d9787c27b9767f" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.4.0" logging: @@ -485,7 +485,7 @@ packages: description: name: logging sha256: "623a88c9594aa774443aa3eb2d41807a48486b5613e67599fb4c41c0ad47c340" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.2.0" matcher: @@ -493,7 +493,7 @@ packages: description: name: matcher sha256: "6501fbd55da300384b768785b83e5ce66991266cec21af89ab9ae7f5ce1c4cbb" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.12.15" material_color_utilities: @@ -501,7 +501,7 @@ packages: description: name: material_color_utilities sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.2.0" meta: @@ -509,7 +509,7 @@ packages: description: name: meta sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.9.1" mime: @@ -517,7 +517,7 @@ packages: description: name: mime sha256: e4ff8e8564c03f255408decd16e7899da1733852a9110a58fe6d1b817684a63e - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.0.4" nm: @@ -525,7 +525,7 @@ packages: description: name: nm sha256: "2c9aae4127bdc8993206464fcc063611e0e36e72018696cd9631023a31b24254" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.5.0" octo_image: @@ -533,7 +533,7 @@ packages: description: name: octo_image sha256: "45b40f99622f11901238e18d48f5f12ea36426d8eced9f4cbf58479c7aa2430d" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.0.0" package_config: @@ -541,7 +541,7 @@ packages: description: name: package_config sha256: "1c5b77ccc91e4823a5af61ee74e6b972db1ef98c2ff5a18d3161c982a55448bd" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.1.0" package_info: @@ -549,7 +549,7 @@ packages: description: name: package_info sha256: "6c07d9d82c69e16afeeeeb6866fe43985a20b3b50df243091bfc4a4ad2b03b75" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.0.2" path: @@ -557,7 +557,7 @@ packages: description: name: path sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.8.3" path_provider: @@ -565,7 +565,7 @@ packages: description: name: path_provider sha256: b27217933eeeba8ff24845c34003b003b2b22151de3c908d0e679e8fe1aa078b - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.1.2" path_provider_android: @@ -573,7 +573,7 @@ packages: description: name: path_provider_android sha256: "477184d672607c0a3bf68fbbf601805f92ef79c82b64b4d6eb318cbca4c48668" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.2.2" path_provider_foundation: @@ -581,7 +581,7 @@ packages: description: name: path_provider_foundation sha256: "5a7999be66e000916500be4f15a3633ebceb8302719b47b9cc49ce924125350f" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.3.2" path_provider_linux: @@ -589,7 +589,7 @@ packages: description: name: path_provider_linux sha256: f7a1fe3a634fe7734c8d3f2766ad746ae2a2884abe22e241a8b301bf5cac3279 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.2.1" path_provider_platform_interface: @@ -597,7 +597,7 @@ packages: description: name: path_provider_platform_interface sha256: "88f5779f72ba699763fa3a3b06aa4bf6de76c8e5de842cf6f29e2e06476c2334" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.1.2" path_provider_windows: @@ -605,7 +605,7 @@ packages: description: name: path_provider_windows sha256: "8bc9f22eee8690981c22aa7fc602f5c85b497a6fb2ceb35ee5a5e5ed85ad8170" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.2.1" petitparser: @@ -613,7 +613,7 @@ packages: description: name: petitparser sha256: cb3798bef7fc021ac45b308f4b51208a152792445cce0448c9a4ba5879dd8750 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "5.4.0" photo_view: @@ -621,7 +621,7 @@ packages: description: name: photo_view sha256: "8036802a00bae2a78fc197af8a158e3e2f7b500561ed23b4c458107685e645bb" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.14.0" platform: @@ -629,7 +629,7 @@ packages: description: name: platform sha256: "12220bb4b65720483f8fa9450b4332347737cf8213dd2840d8b2c823e47243ec" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "3.1.4" plugin_platform_interface: @@ -637,7 +637,7 @@ packages: description: name: plugin_platform_interface sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.1.8" pool: @@ -645,7 +645,7 @@ packages: description: name: pool sha256: "20fe868b6314b322ea036ba325e6fc0711a22948856475e2c2b6306e8ab39c2a" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.5.1" pub_semver: @@ -653,7 +653,7 @@ packages: description: name: pub_semver sha256: "40d3ab1bbd474c4c2328c91e3a7df8c6dd629b79ece4c4bd04bee496a224fb0c" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.1.4" pubspec_parse: @@ -661,7 +661,7 @@ packages: description: name: pubspec_parse sha256: c63b2876e58e194e4b0828fcb080ad0e06d051cb607a6be51a9e084f47cb9367 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.2.3" retrofit: @@ -669,7 +669,7 @@ packages: description: name: retrofit sha256: "13a2865c0d97da580ea4e3c64d412d81f365fd5b26be2a18fca9582e021da37a" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "4.1.0" retrofit_generator: @@ -677,7 +677,7 @@ packages: description: name: retrofit_generator sha256: "9499eb46b3657a62192ddbc208ff7e6c6b768b19e83c1ee6f6b119c864b99690" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "7.0.8" rxdart: @@ -685,7 +685,7 @@ packages: description: name: rxdart sha256: "0c7c0cedd93788d996e33041ffecda924cc54389199cde4e6a34b440f50044cb" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.27.7" shelf: @@ -693,7 +693,7 @@ packages: description: name: shelf sha256: ad29c505aee705f41a4d8963641f91ac4cee3c8fad5947e033390a7bd8180fa4 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.4.1" shelf_web_socket: @@ -701,7 +701,7 @@ packages: description: name: shelf_web_socket sha256: "9ca081be41c60190ebcb4766b2486a7d50261db7bd0f5d9615f2d653637a84c1" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.0.4" sky_engine: @@ -714,7 +714,7 @@ packages: description: name: source_gen sha256: "14658ba5f669685cd3d63701d01b31ea748310f7ab854e471962670abcf57832" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.5.0" source_helper: @@ -722,7 +722,7 @@ packages: description: name: source_helper sha256: "6adebc0006c37dd63fe05bca0a929b99f06402fc95aa35bf36d67f5c06de01fd" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.3.4" source_span: @@ -730,7 +730,7 @@ packages: description: name: source_span sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.9.1" sprintf: @@ -738,7 +738,7 @@ packages: description: name: sprintf sha256: "1fc9ffe69d4df602376b52949af107d8f5703b77cda567c4d7d86a0693120f23" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "7.0.0" sqflite: @@ -746,7 +746,7 @@ packages: description: name: sqflite sha256: a9016f495c927cb90557c909ff26a6d92d9bd54fc42ba92e19d4e79d61e798c6 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.3.2" sqflite_common: @@ -754,7 +754,7 @@ packages: description: name: sqflite_common sha256: "28d8c66baee4968519fb8bd6cdbedad982d6e53359091f0b74544a9f32ec72d5" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.5.3" stack_trace: @@ -762,7 +762,7 @@ packages: description: name: stack_trace sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.11.0" stream_channel: @@ -770,7 +770,7 @@ packages: description: name: stream_channel sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.1.1" stream_transform: @@ -778,7 +778,7 @@ packages: description: name: stream_transform sha256: "14a00e794c7c11aa145a170587321aedce29769c08d7f58b1d141da75e3b1c6f" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.1.0" string_scanner: @@ -786,7 +786,7 @@ packages: description: name: string_scanner sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.2.0" synchronized: @@ -794,7 +794,7 @@ packages: description: name: synchronized sha256: "539ef412b170d65ecdafd780f924e5be3f60032a1128df156adad6c5b373d558" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "3.1.0+1" term_glyph: @@ -802,7 +802,7 @@ packages: description: name: term_glyph sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.2.1" test_api: @@ -810,7 +810,7 @@ packages: description: name: test_api sha256: eb6ac1540b26de412b3403a163d919ba86f6a973fe6cc50ae3541b80092fdcfb - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.5.1" timing: @@ -818,7 +818,7 @@ packages: description: name: timing sha256: "70a3b636575d4163c477e6de42f247a23b315ae20e86442bebe32d3cabf61c32" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.0.1" tuple: @@ -826,7 +826,7 @@ packages: description: name: tuple sha256: a97ce2013f240b2f3807bcbaf218765b6f301c3eff91092bcfa23a039e7dd151 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.0.2" typed_data: @@ -834,7 +834,7 @@ packages: description: name: typed_data sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.3.2" uuid: @@ -842,7 +842,7 @@ packages: description: name: uuid sha256: "22c94e5ad1e75f9934b766b53c742572ee2677c56bc871d850a57dad0f82127f" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "4.2.2" vector_math: @@ -850,7 +850,7 @@ packages: description: name: vector_math sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.1.4" watcher: @@ -858,7 +858,7 @@ packages: description: name: watcher sha256: "3d2ad6751b3c16cf07c7fca317a1413b3f26530319181b37e3b9039b84fc01d8" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.1.0" web_socket_channel: @@ -866,7 +866,7 @@ packages: description: name: web_socket_channel sha256: d88238e5eac9a42bb43ca4e721edba3c08c6354d4a53063afaa568516217621b - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.4.0" win32: @@ -874,7 +874,7 @@ packages: description: name: win32 sha256: "350a11abd2d1d97e0cc7a28a81b781c08002aa2864d9e3f192ca0ffa18b06ed3" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "5.0.9" xdg_directories: @@ -882,7 +882,7 @@ packages: description: name: xdg_directories sha256: faea9dee56b520b55a566385b84f2e8de55e7496104adada9962e0bd11bcff1d - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.0.4" xml: @@ -890,7 +890,7 @@ packages: description: name: xml sha256: "5bc72e1e45e941d825fd7468b9b4cc3b9327942649aeb6fc5cdbf135f0a86e84" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "6.3.0" yaml: @@ -898,7 +898,7 @@ packages: description: name: yaml sha256: "75769501ea3489fca56601ff33454fe45507ea3bfb014161abc3b43ae25989d5" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "3.1.2" sdks: