diff --git a/making_school_asignment_app/android/app/src/main/AndroidManifest.xml b/making_school_asignment_app/android/app/src/main/AndroidManifest.xml index 8a5f579..f91ee30 100644 --- a/making_school_asignment_app/android/app/src/main/AndroidManifest.xml +++ b/making_school_asignment_app/android/app/src/main/AndroidManifest.xml @@ -87,25 +87,21 @@ - + - - + + \ No newline at end of file diff --git a/making_school_asignment_app/android/app/src/profile/AndroidManifest.xml b/making_school_asignment_app/android/app/src/profile/AndroidManifest.xml index 000faeb..513286b 100644 --- a/making_school_asignment_app/android/app/src/profile/AndroidManifest.xml +++ b/making_school_asignment_app/android/app/src/profile/AndroidManifest.xml @@ -30,8 +30,8 @@ - + diff --git a/making_school_asignment_app/lib/page/login_page/children/agreement_page.dart b/making_school_asignment_app/lib/page/login_page/children/agreement_page.dart index a741b6f..092dfeb 100644 --- a/making_school_asignment_app/lib/page/login_page/children/agreement_page.dart +++ b/making_school_asignment_app/lib/page/login_page/children/agreement_page.dart @@ -21,7 +21,16 @@ class AgreementPage extends StatelessWidget { body: ListView( padding: EdgeInsets.symmetric(horizontal: 14.w, vertical: 8.h), children: [ - HtmlWidget(agreement.richText, textStyle: const TextStyle(color: Colors.black)), + HtmlWidget( + agreement.richText, + textStyle: const TextStyle(color: Colors.black), + // 禁用文本选择,避免触发剪切板访问 + renderMode: RenderMode.column, + // 禁用所有交互 + onTapUrl: (url) => false, + // 自定义样式,确保安全 + customStylesBuilder: (element) => {}, + ), ], ), ); diff --git a/making_school_asignment_app/lib/page/login_page/children/register.dart b/making_school_asignment_app/lib/page/login_page/children/register.dart index d2fe094..089a739 100644 --- a/making_school_asignment_app/lib/page/login_page/children/register.dart +++ b/making_school_asignment_app/lib/page/login_page/children/register.dart @@ -1,4 +1,3 @@ -import 'package:dio/dio.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_easyloading/flutter_easyloading.dart'; @@ -148,6 +147,7 @@ class _RegisterState extends State with RequestToolMixin { maxLines: 1, maxLength: 20, textInputAction: TextInputAction.next, + enableInteractiveSelection: false, onEditingComplete: () { FocusScope.of(context).requestFocus(_pwdFocus); }, @@ -169,6 +169,7 @@ class _RegisterState extends State with RequestToolMixin { maxLines: 1, obscureText: _isShowPwd, //隐藏密码显示 textInputAction: TextInputAction.go, + enableInteractiveSelection: false, onSubmitted: (_) => toRegister(), style: TextStyle( color: const Color.fromRGBO(80, 87, 103, 1), @@ -249,7 +250,8 @@ class _RegisterState extends State with RequestToolMixin { ), InkWell( 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( '《用户协议》', @@ -259,12 +261,13 @@ class _RegisterState extends State with RequestToolMixin { ), InkWell( onTap: () { - Get.toNamed(Routes.agreementPage, arguments: {"type": AGREEMENT_KEY.PRIVACY_GREEMENT.name}); + Get.toNamed(Routes.agreementPage, + arguments: {"type": AGREEMENT_KEY.PRIVACY_GREEMENT.name}); }, child: quickText( '《隐私协议》', size: 12.sp, - color:Theme.of(context).primaryColor, + color: Theme.of(context).primaryColor, ), ), ], 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 964aa0a..7bca5b1 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 @@ -1,7 +1,7 @@ -import 'package:get/get.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; +import 'package:get/get.dart'; import 'package:making_school_asignment_app/common/const_text.dart'; import 'package:making_school_asignment_app/common/utils/anti_shake_throttling.dart'; import 'package:making_school_asignment_app/common/utils/app_upgrade/upgradeLogic.dart'; @@ -33,6 +33,7 @@ class _LoginPageState extends State { WidgetsBinding.instance.addPostFrameCallback((_) async { await sysProtocol(context); + /// 为了发布各平台方便审核 不能再登陆页面直接弹出审核 // await Future.delayed(Duration.zero, () => upgradeLogic.getAppUpgrade(context)); }); @@ -88,7 +89,8 @@ class _LoginPageState extends State { padding: EdgeInsets.only(top: 50.h, bottom: 16.h, left: 40.w, right: 40.w), decoration: BoxDecoration( color: Colors.white, - borderRadius: BorderRadius.only(topLeft: Radius.circular(30.r), topRight: Radius.circular(30.r)), + borderRadius: + BorderRadius.only(topLeft: Radius.circular(30.r), topRight: Radius.circular(30.r)), /*boxShadow: const [ BoxShadow( color: Color.fromRGBO(46, 91, 255, 0.1), @@ -112,6 +114,7 @@ class _LoginPageState extends State { controller: state.userNameController, /* maxLines: 1, maxLength: 20,*/ + enableInteractiveSelection: false, textInputAction: TextInputAction.next, onEditingComplete: () { Get.focusScope?.nextFocus(); @@ -169,10 +172,12 @@ class _LoginPageState extends State { //隐藏密码显示 // textInputAction: state.isShowPwd.value?TextInputAction.go:TextInputAction.next, textInputAction: TextInputAction.send, - onSubmitted: (_) => easyThrottle('LOGIN_EASYTHROTTLE', () async{ + enableInteractiveSelection: false, + onSubmitted: (_) => easyThrottle('LOGIN_EASYTHROTTLE', () async { Utils.hideKeyboard(); await Future.delayed(const Duration(milliseconds: 300)); - WidgetsBinding.instance.addPostFrameCallback((_) => logic.toLogin(context,upgradeLogic)); + WidgetsBinding.instance + .addPostFrameCallback((_) => logic.toLogin(context, upgradeLogic)); }), style: TextStyle( color: const Color(0xFF434343), @@ -203,7 +208,9 @@ class _LoginPageState extends State { child: Padding( padding: EdgeInsets.only(right: 5.r), child: Image.asset( - state.isShowPwd.value ? 'assets/images/eye_default.png' : 'assets/images/eye_active.png', + state.isShowPwd.value + ? 'assets/images/eye_default.png' + : 'assets/images/eye_active.png', width: 15.r, height: 15.r, ), @@ -252,7 +259,8 @@ class _LoginPageState extends State { (Set states) { if (states.contains(WidgetState.selected)) { //修改勾选时边框颜色为红色 - return BorderSide(width: 1.5.r, color: Theme.of(context).primaryColor); + return BorderSide( + width: 1.5.r, color: Theme.of(context).primaryColor); } //修改默认时边框颜色为绿色 return BorderSide(width: 1.r, color: const Color(0xFF434343)); @@ -288,10 +296,10 @@ class _LoginPageState extends State { ], ), InkWell( - onTap: () => easyThrottle('LOGIN_EASYTHROTTLE', () async{ + onTap: () => easyThrottle('LOGIN_EASYTHROTTLE', () async { Utils.hideKeyboard(); await Future.delayed(Duration.zero); - WidgetsBinding.instance.addPostFrameCallback((_) => logic.toLogin(context,upgradeLogic)); + WidgetsBinding.instance.addPostFrameCallback((_) => logic.toLogin(context, upgradeLogic)); }), child: Obx(() { return Container( @@ -353,7 +361,8 @@ class _LoginPageState extends State { ), InkWell( 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( '请仔细阅读', @@ -362,7 +371,8 @@ class _LoginPageState extends State { ), InkWell( onTap: () { - Get.toNamed(Routes.agreementPage, arguments: {"type": AGREEMENT_KEY.USER_AGREEMENT.name}); + Get.toNamed(Routes.agreementPage, + arguments: {"type": AGREEMENT_KEY.USER_AGREEMENT.name}); }, child: Text( '《用户协议》', @@ -371,7 +381,8 @@ class _LoginPageState extends State { ), InkWell( onTap: () { - Get.toNamed(Routes.agreementPage, arguments: {"type": AGREEMENT_KEY.PRIVACY_GREEMENT.name}); + Get.toNamed(Routes.agreementPage, + arguments: {"type": AGREEMENT_KEY.PRIVACY_GREEMENT.name}); }, child: quickText( '《隐私协议》', diff --git a/making_school_asignment_app/pubspec.yaml b/making_school_asignment_app/pubspec.yaml index 9f5d474..845d967 100644 --- a/making_school_asignment_app/pubspec.yaml +++ b/making_school_asignment_app/pubspec.yaml @@ -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 # 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. -version: 1.0.6+7 +version: 1.0.7+8 environment: sdk: '>=3.4.1 <4.0.0'