diff --git a/making_school_asignment_app/lib/common/utils/app_upgrade/UpdateDialog.dart b/making_school_asignment_app/lib/common/utils/app_upgrade/UpdateDialog.dart index 1543ba4..8b60c11 100644 --- a/making_school_asignment_app/lib/common/utils/app_upgrade/UpdateDialog.dart +++ b/making_school_asignment_app/lib/common/utils/app_upgrade/UpdateDialog.dart @@ -19,6 +19,7 @@ import 'package:get/get.dart'; import 'package:making_school_asignment_app/common/utils/app_upgrade/DownloadApk.dart'; import 'package:making_school_asignment_app/common/utils/app_upgrade/UpgradePermission.dart'; import 'package:making_school_asignment_app/common/utils/app_upgrade/upgradeLogic.dart'; +import 'package:making_school_asignment_app/common/utils/utils.dart'; import 'package:making_school_asignment_app/page/global_widget/my_text.dart'; import 'package:percent_indicator/linear_percent_indicator.dart'; import 'package:flutter/material.dart'; @@ -33,14 +34,13 @@ class UpdateDialog extends Dialog { final UpdateAppEvent updateAppEvent; final String deviceInfo; - const UpdateDialog( - {super.key, required this.updateAppEvent, required this.deviceInfo}); + const UpdateDialog({super.key, required this.updateAppEvent, required this.deviceInfo}); @override Widget build(BuildContext context) { return Center( child: Container( - width: 319.w, + width: isPad() ? ScreenUtil().screenWidth * 0.62 : 319.w, height: 440.h, padding: EdgeInsets.symmetric(vertical: 8.h), decoration: BoxDecoration( @@ -61,7 +61,7 @@ class UpdateDialog extends Dialog { children: [ Container( alignment: Alignment.center, - margin: EdgeInsets.only(top: 128.h, bottom: 10.h), + margin: EdgeInsets.only(top:isPad()? 136.h : 128.h, bottom: 10.h), child: quickText( updateAppEvent.title, size: 18.sp, @@ -72,17 +72,11 @@ class UpdateDialog extends Dialog { HtmlWidget( updateAppEvent.description, customStylesBuilder: (element) { - return { - 'color': '#666666', - 'font-weight': 'normal', - 'text-decoration': 'none' - }; + return {'color': '#666666', 'font-weight': 'normal', 'text-decoration': 'none'}; }, - onLoadingBuilder: (context, element, loadingProgress) => - const CircularProgressIndicator(), + onLoadingBuilder: (context, element, loadingProgress) => const CircularProgressIndicator(), renderMode: RenderMode.column, - textStyle: - TextStyle(fontSize: 14.sp, color: Colors.black87), + textStyle: TextStyle(fontSize: 14.sp, color: Colors.black87), ) ], ), @@ -103,9 +97,7 @@ class UpdateDialog extends Dialog { builder: (BuildContext context) { return WillPopScope( onWillPop: () async => false, - child: UpdateDialog( - updateAppEvent: updateAppEvent, - deviceInfo: updateAppEvent.deviceInfo), + child: UpdateDialog(updateAppEvent: updateAppEvent, deviceInfo: updateAppEvent.deviceInfo), ); }, ); @@ -128,7 +120,7 @@ class DownloadProgress extends StatelessWidget { children: [ LinearPercentIndicator( alignment: MainAxisAlignment.center, - width: 245.w, + width: isPad() ? ScreenUtil().screenWidth * 0.55 : 245.w, animation: false, lineHeight: 20.0.h, percent: logic.downloadRatio.value, @@ -144,10 +136,7 @@ class DownloadProgress extends StatelessWidget { Container( height: 6.h, ), - quickText('更新中...', - size: 12.sp, - fontWeight: FontWeight.w500, - color: const Color.fromRGBO(90, 90, 90, 1)) + quickText('更新中...', size: 12.sp, fontWeight: FontWeight.w500, color: const Color.fromRGBO(90, 90, 90, 1)) ], ); }); @@ -189,23 +178,18 @@ class DownloadButton extends StatelessWidget { return Container( height: 38.h, - width: 245.w, + width: isPad() ? ScreenUtil().screenWidth * 0.45 : 245.w, decoration: BoxDecoration( borderRadius: BorderRadius.all(Radius.circular(42.h)), - gradient: LinearGradient( - colors: [primaryColor, primaryColor.withOpacity(0.7)]), + gradient: LinearGradient(colors: [primaryColor, primaryColor.withOpacity(0.7)]), ), child: MaterialButton( - onPressed: () => easyThrottle('DownloadButton_App_Upgrade', - duration: const Duration(milliseconds: 1000), () async { - if (deviceInfo == "android" && - updateAppEvent.equipment == Equipment.android) { + onPressed: () => easyThrottle('DownloadButton_App_Upgrade', duration: const Duration(milliseconds: 1000), () async { + if (deviceInfo == "android" && updateAppEvent.equipment == Equipment.android) { // 权限检查 判断是否有读写内存的权限 - bool flag = await UpgradePermission(updateAppEvent.deviceInfo) - .checkPermission(context, updateAppEvent); + bool flag = await UpgradePermission(updateAppEvent.deviceInfo).checkPermission(context, updateAppEvent); if (flag) { - flag = await DownloadApk.installApk( - context, updateAppEvent, logic); + flag = await DownloadApk.installApk(context, updateAppEvent, logic); if (!flag) { print('执行到了重置更新按钮的地方....'); logic.downloadRatio.value = 0.0; // 更新失败重置 更新按钮 @@ -217,8 +201,7 @@ class DownloadButton extends StatelessWidget { } // await FlutterClipboard.copy(updateAppEvent.link); // setTimeOut(1000, () => ToastUtils.showInfo('下载链接已经复制到设备,可前往浏览器下载安装')); - } else if (deviceInfo == "ios" && - updateAppEvent.equipment == Equipment.ios) { + } else if (deviceInfo == "ios" && updateAppEvent.equipment == Equipment.ios) { try { print(updateAppEvent.link); await launchUrlString(updateAppEvent.link); @@ -232,8 +215,7 @@ class DownloadButton extends StatelessWidget { // await autoUpdater.setScheduledCheckInterval(0); // } }), - child: quickText(!logic.loadingApk.value ? '立即体验' : '正在下载...', - size: 16.sp, color: Colors.white, fontWeight: FontWeight.w500), + child: quickText(!logic.loadingApk.value ? '立即体验' : '正在下载...', size: 16.sp, color: Colors.white, fontWeight: FontWeight.w500), ), ); }); diff --git a/making_school_asignment_app/lib/common/utils/app_upgrade/upgradeLogic.dart b/making_school_asignment_app/lib/common/utils/app_upgrade/upgradeLogic.dart index 021b3c8..b3fd7a5 100644 --- a/making_school_asignment_app/lib/common/utils/app_upgrade/upgradeLogic.dart +++ b/making_school_asignment_app/lib/common/utils/app_upgrade/upgradeLogic.dart @@ -23,7 +23,7 @@ class UpgradeLogic extends GetxController with RequestToolMixin { // super.onInit(); // } - void getAppUpgrade(BuildContext context) async { + Future getAppUpgrade(BuildContext context) async { if (!const bool.fromEnvironment('dart.vm.product')) return; try { diff --git a/making_school_asignment_app/lib/page/global_widget/start_page.dart b/making_school_asignment_app/lib/page/global_widget/start_page.dart index 9174776..9f4f192 100644 --- a/making_school_asignment_app/lib/page/global_widget/start_page.dart +++ b/making_school_asignment_app/lib/page/global_widget/start_page.dart @@ -39,12 +39,13 @@ class _StartPageState extends State with RequestToolMixin { Future.delayed(const Duration(seconds: 3), () => FlutterNativeSplash.remove()); - Get.put(HomeLogic()); - Get.put(WorkLogic()); // const WorkPage(), _bodyList = [const HomePage(), const MyInfo()]; // APP 启动后就直接更新 - if (!_upgradeLogic.showUpgrade.value) _upgradeLogic.getAppUpgrade(context); + WidgetsBinding.instance.addPostFrameCallback((e) { + /// 首页用户未更新不进行更新判断,没有登陆的用户在登陆页面和40秒回调中检查弹出更新APP + if (!_upgradeLogic.showUpgrade.value && UserStore.to.userDetailInfo.value != null) _upgradeLogic.getAppUpgrade(context); + }); _timer?.cancel(); _timer = Timer.periodic(const Duration(seconds: 40), (e) { if (Get.currentRoute == Routes.login) return; // 在登录页面不更新APP diff --git a/making_school_asignment_app/lib/page/home_page/children/my_info.dart b/making_school_asignment_app/lib/page/home_page/children/my_info.dart index 29b0d96..8d67c66 100644 --- a/making_school_asignment_app/lib/page/home_page/children/my_info.dart +++ b/making_school_asignment_app/lib/page/home_page/children/my_info.dart @@ -143,7 +143,14 @@ class _MyInfoState extends State with AutomaticKeepAliveClientMixin { onTap: () { _showAlertDialog(context); }, - child: Image.asset('assets/images/out_icon.png'), + child: Container( + padding: EdgeInsets.all(2.r), + decoration: BoxDecoration( + color: const Color.fromRGBO(255, 255, 255, 1), + borderRadius: BorderRadius.circular(50.r), + ), + child: Image.asset('assets/images/out_icon.png',fit: BoxFit.cover), + ), ) ], ), diff --git a/making_school_asignment_app/lib/page/login_page/login_logic.dart b/making_school_asignment_app/lib/page/login_page/login_logic.dart index e780363..0cc7820 100644 --- a/making_school_asignment_app/lib/page/login_page/login_logic.dart +++ b/making_school_asignment_app/lib/page/login_page/login_logic.dart @@ -4,6 +4,7 @@ import 'package:flutter_easyloading/flutter_easyloading.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/store/user_store.dart'; +import 'package:making_school_asignment_app/common/utils/app_upgrade/upgradeLogic.dart'; import 'package:making_school_asignment_app/common/utils/storage.dart'; import 'package:making_school_asignment_app/common/utils/toast_utils.dart'; import 'package:making_school_asignment_app/common/utils/utils.dart'; @@ -55,13 +56,17 @@ class LoginLogic extends GetxController with RequestToolMixin { } /// 前往登录 - void toLogin(BuildContext context) async { + void toLogin(BuildContext context, UpgradeLogic upgradeLogic) async { if (!state.canLogin.value) return; Utils.hideKeyboard(); state.canLogin.value = false; - void toMsg(msg) { - ToastUtils.showError(msg); + void toMsg(msg, [bool error = true]) { + if (error) { + ToastUtils.showError(msg); + } else { + ToastUtils.showInfo(msg); + } state.canLogin.value = true; } @@ -78,6 +83,11 @@ class LoginLogic extends GetxController with RequestToolMixin { EasyLoading.show(status: 'loading...'); try { + /// 检查升级APP + if (userName != 'AppleTester' && const bool.fromEnvironment('dart.vm.product')) { + upgradeLogic.getAppUpgrade(Get.context ?? context); + return toMsg('请在升级APP后再次登陆', false); + } await getClient().toLogin(userName, userPwd); String? nameidentifier = UserStore.to.userInfo.value?.nameidentifier; if (nameidentifier == null) { @@ -88,7 +98,6 @@ class LoginLogic extends GetxController with RequestToolMixin { throw Exception('用户信息获取失败'); } UserStore.to.setUserDetailInfo(data); - EasyLoading.dismiss(); if (state.keepPwd.value) { StorageService.to.write(AppStorageKey.account.value, userName); @@ -96,39 +105,8 @@ class LoginLogic extends GetxController with RequestToolMixin { } Get.offAllNamed(Routes.startPage); - // if (resultData.code != 200 || userData?.accessToken == null || userData?.accessToken == '') { - // return toMsg(resultData.message ?? '登录失败,请重试'); - // } - - // UserStore.to.setToken(userData!.accessToken); - // state.canLogin.value = true; - - // BaseStructureResult userRes = await UserApi.getUserInfo(); - // print('99999999999'); - // print(userRes.data!.userName); - // if (userRes.code != 200 || userRes.data == null) { - // throw Exception('登录失败,请重试'); - // } else { - // UserStore.to.setUserInfo(userRes.data!); - // Get.offAllNamed(Routes.home); - // } - - /* fastData.setUser(userRes.data!).then((value) { - // 记住密码 - if (keepPwd) { - fastData.setUserPwdAndAccount({'pwd': userPwd, 'account': userName}); - } - // 更新 - ref.read(userProvider.notifier).initUserInfo(); - ref.read(userTokenProvider.notifier).initToken(); - - // 跳转登录页 - Get.toNamed(Routes.login); - // RouterManager.router.navigateTo(context, RouterManager.root, clearStack: true, transition: getTransition()); - });*/ } catch (e) { print('进来异常'); - EasyLoading.dismiss(); UserStore.to.erase(); StorageService.to.erase(); if (e is Exception) { @@ -147,6 +125,7 @@ class LoginLogic extends GetxController with RequestToolMixin { toMsg('登录失败,请重试'); } finally { state.canLogin.value = true; + EasyLoading.dismiss(); } } diff --git a/making_school_asignment_app/lib/page/login_page/login_view.dart b/making_school_asignment_app/lib/page/login_page/login_view.dart index ac904a7..964aa0a 100644 --- a/making_school_asignment_app/lib/page/login_page/login_view.dart +++ b/making_school_asignment_app/lib/page/login_page/login_view.dart @@ -33,7 +33,8 @@ class _LoginPageState extends State { WidgetsBinding.instance.addPostFrameCallback((_) async { await sysProtocol(context); - await Future.delayed(Duration.zero, () => upgradeLogic.getAppUpgrade(context)); + /// 为了发布各平台方便审核 不能再登陆页面直接弹出审核 + // await Future.delayed(Duration.zero, () => upgradeLogic.getAppUpgrade(context)); }); super.initState(); } @@ -171,7 +172,7 @@ class _LoginPageState extends State { onSubmitted: (_) => easyThrottle('LOGIN_EASYTHROTTLE', () async{ Utils.hideKeyboard(); await Future.delayed(const Duration(milliseconds: 300)); - WidgetsBinding.instance.addPostFrameCallback((_) => logic.toLogin(context)); + WidgetsBinding.instance.addPostFrameCallback((_) => logic.toLogin(context,upgradeLogic)); }), style: TextStyle( color: const Color(0xFF434343), @@ -290,7 +291,7 @@ class _LoginPageState extends State { onTap: () => easyThrottle('LOGIN_EASYTHROTTLE', () async{ Utils.hideKeyboard(); await Future.delayed(Duration.zero); - WidgetsBinding.instance.addPostFrameCallback((_) => logic.toLogin(context)); + WidgetsBinding.instance.addPostFrameCallback((_) => logic.toLogin(context,upgradeLogic)); }), child: Obx(() { return Container( diff --git a/making_school_asignment_app/lib/routes/app_pages.dart b/making_school_asignment_app/lib/routes/app_pages.dart index 8606d36..bbf1dad 100644 --- a/making_school_asignment_app/lib/routes/app_pages.dart +++ b/making_school_asignment_app/lib/routes/app_pages.dart @@ -49,7 +49,16 @@ abstract class AppPages { GetPage(name: Routes.register, page: () => const Register(), transition: getTransition()), GetPage(name: Routes.agreementPage, page: () => const AgreementPage(), binding: LoginBinding(), transition: getTransition()), GetPage(name: Routes.home, page: () => const HomePage(), binding: HomeBinding(), transition: getTransition()), - GetPage(name: Routes.startPage, page: () => const StartPage(), binding: StartPageIndexBinding(), transition: getTransition()), + GetPage( + name: Routes.startPage, + page: () => const StartPage(), + bindings: [ + HomeBinding(), + WorkBinding(), + StartPageIndexBinding(), + ], + transition: getTransition(), + ), GetPage(name: Routes.myInfo, page: () => const MyInfo(), transition: getTransition()), GetPage(name: Routes.work, page: () => const WorkPage(), binding: WorkBinding(), transition: getTransition()), GetPage(name: Routes.otherPage, page: () => const OhterPage(), transition: getTransition()),