补充提交
This commit is contained in:
parent
e96429fe05
commit
1fc54d7526
|
|
@ -87,25 +87,21 @@
|
||||||
<!-- 屏幕常亮权限 -->
|
<!-- 屏幕常亮权限 -->
|
||||||
<uses-permission
|
<uses-permission
|
||||||
android:name="android.permission.WAKE_LOCK"/>
|
android:name="android.permission.WAKE_LOCK"/>
|
||||||
<uses-permission
|
<!-- <uses-permission
|
||||||
android:name="android.permission.CAMERA"/>
|
android:name="android.permission.CAMERA"/> -->
|
||||||
<!-- Permissions options for the `access notification policy` group -->
|
<!-- Permissions options for the `access notification policy` group -->
|
||||||
<uses-permission
|
<uses-permission
|
||||||
android:name="android.permission.ACCESS_NOTIFICATION_POLICY"/>
|
android:name="android.permission.ACCESS_NOTIFICATION_POLICY"/>
|
||||||
<!-- Permissions options for the `notification` group -->
|
<!-- Permissions options for the `notification` group -->
|
||||||
<uses-permission
|
<uses-permission
|
||||||
android:name="android.permission.POST_NOTIFICATIONS"/>
|
android:name="android.permission.POST_NOTIFICATIONS"/>
|
||||||
<!-- Required to query activities that can process text, see:
|
<!-- 注释掉文本处理权限,避免不必要的剪切板访问 -->
|
||||||
https://developer.android.com/training/package-visibility and
|
<!-- <queries>
|
||||||
https://developer.android.com/reference/android/content/Intent#ACTION_PROCESS_TEXT.
|
|
||||||
|
|
||||||
In particular, this is used by the Flutter engine in io.flutter.plugin.text.ProcessTextPlugin. -->
|
|
||||||
<queries>
|
|
||||||
<intent>
|
<intent>
|
||||||
<action
|
<action
|
||||||
android:name="android.intent.action.PROCESS_TEXT"/>
|
android:name="android.intent.action.PROCESS_TEXT"/>
|
||||||
<data
|
<data
|
||||||
android:mimeType="text/plain"/>
|
android:mimeType="text/plain"/>
|
||||||
</intent>
|
</intent>
|
||||||
</queries>
|
</queries> -->
|
||||||
</manifest>
|
</manifest>
|
||||||
|
|
@ -30,8 +30,8 @@
|
||||||
<!-- 屏幕常亮权限 -->
|
<!-- 屏幕常亮权限 -->
|
||||||
<uses-permission
|
<uses-permission
|
||||||
android:name="android.permission.WAKE_LOCK"/>
|
android:name="android.permission.WAKE_LOCK"/>
|
||||||
<uses-permission
|
<!-- <uses-permission
|
||||||
android:name="android.permission.CAMERA"/>
|
android:name="android.permission.CAMERA"/> -->
|
||||||
<!-- Permissions options for the `access notification policy` group -->
|
<!-- Permissions options for the `access notification policy` group -->
|
||||||
<uses-permission
|
<uses-permission
|
||||||
android:name="android.permission.ACCESS_NOTIFICATION_POLICY"/>
|
android:name="android.permission.ACCESS_NOTIFICATION_POLICY"/>
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,16 @@ class AgreementPage extends StatelessWidget {
|
||||||
body: ListView(
|
body: ListView(
|
||||||
padding: EdgeInsets.symmetric(horizontal: 14.w, vertical: 8.h),
|
padding: EdgeInsets.symmetric(horizontal: 14.w, vertical: 8.h),
|
||||||
children: [
|
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) => <String, String>{},
|
||||||
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
import 'package:dio/dio.dart';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
import 'package:flutter_easyloading/flutter_easyloading.dart';
|
import 'package:flutter_easyloading/flutter_easyloading.dart';
|
||||||
|
|
@ -148,6 +147,7 @@ class _RegisterState extends State<Register> with RequestToolMixin {
|
||||||
maxLines: 1,
|
maxLines: 1,
|
||||||
maxLength: 20,
|
maxLength: 20,
|
||||||
textInputAction: TextInputAction.next,
|
textInputAction: TextInputAction.next,
|
||||||
|
enableInteractiveSelection: false,
|
||||||
onEditingComplete: () {
|
onEditingComplete: () {
|
||||||
FocusScope.of(context).requestFocus(_pwdFocus);
|
FocusScope.of(context).requestFocus(_pwdFocus);
|
||||||
},
|
},
|
||||||
|
|
@ -169,6 +169,7 @@ class _RegisterState extends State<Register> with RequestToolMixin {
|
||||||
maxLines: 1,
|
maxLines: 1,
|
||||||
obscureText: _isShowPwd, //隐藏密码显示
|
obscureText: _isShowPwd, //隐藏密码显示
|
||||||
textInputAction: TextInputAction.go,
|
textInputAction: TextInputAction.go,
|
||||||
|
enableInteractiveSelection: false,
|
||||||
onSubmitted: (_) => toRegister(),
|
onSubmitted: (_) => toRegister(),
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
color: const Color.fromRGBO(80, 87, 103, 1),
|
color: const Color.fromRGBO(80, 87, 103, 1),
|
||||||
|
|
@ -249,7 +250,8 @@ class _RegisterState extends State<Register> with RequestToolMixin {
|
||||||
),
|
),
|
||||||
InkWell(
|
InkWell(
|
||||||
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(
|
child: quickText(
|
||||||
'《用户协议》',
|
'《用户协议》',
|
||||||
|
|
@ -259,12 +261,13 @@ class _RegisterState extends State<Register> with RequestToolMixin {
|
||||||
),
|
),
|
||||||
InkWell(
|
InkWell(
|
||||||
onTap: () {
|
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(
|
child: quickText(
|
||||||
'《隐私协议》',
|
'《隐私协议》',
|
||||||
size: 12.sp,
|
size: 12.sp,
|
||||||
color:Theme.of(context).primaryColor,
|
color: Theme.of(context).primaryColor,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
import 'package:get/get.dart';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
import 'package:flutter_screenutil/flutter_screenutil.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/const_text.dart';
|
||||||
import 'package:making_school_asignment_app/common/utils/anti_shake_throttling.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';
|
import 'package:making_school_asignment_app/common/utils/app_upgrade/upgradeLogic.dart';
|
||||||
|
|
@ -33,6 +33,7 @@ class _LoginPageState extends State<LoginPage> {
|
||||||
|
|
||||||
WidgetsBinding.instance.addPostFrameCallback((_) async {
|
WidgetsBinding.instance.addPostFrameCallback((_) async {
|
||||||
await sysProtocol(context);
|
await sysProtocol(context);
|
||||||
|
|
||||||
/// 为了发布各平台方便审核 不能再登陆页面直接弹出审核
|
/// 为了发布各平台方便审核 不能再登陆页面直接弹出审核
|
||||||
// await Future.delayed(Duration.zero, () => upgradeLogic.getAppUpgrade(context));
|
// await Future.delayed(Duration.zero, () => upgradeLogic.getAppUpgrade(context));
|
||||||
});
|
});
|
||||||
|
|
@ -88,7 +89,8 @@ class _LoginPageState extends State<LoginPage> {
|
||||||
padding: EdgeInsets.only(top: 50.h, bottom: 16.h, left: 40.w, right: 40.w),
|
padding: EdgeInsets.only(top: 50.h, bottom: 16.h, left: 40.w, right: 40.w),
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
color: Colors.white,
|
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: const [
|
||||||
BoxShadow(
|
BoxShadow(
|
||||||
color: Color.fromRGBO(46, 91, 255, 0.1),
|
color: Color.fromRGBO(46, 91, 255, 0.1),
|
||||||
|
|
@ -112,6 +114,7 @@ class _LoginPageState extends State<LoginPage> {
|
||||||
controller: state.userNameController,
|
controller: state.userNameController,
|
||||||
/* maxLines: 1,
|
/* maxLines: 1,
|
||||||
maxLength: 20,*/
|
maxLength: 20,*/
|
||||||
|
enableInteractiveSelection: false,
|
||||||
textInputAction: TextInputAction.next,
|
textInputAction: TextInputAction.next,
|
||||||
onEditingComplete: () {
|
onEditingComplete: () {
|
||||||
Get.focusScope?.nextFocus();
|
Get.focusScope?.nextFocus();
|
||||||
|
|
@ -169,10 +172,12 @@ class _LoginPageState extends State<LoginPage> {
|
||||||
//隐藏密码显示
|
//隐藏密码显示
|
||||||
// textInputAction: state.isShowPwd.value?TextInputAction.go:TextInputAction.next,
|
// textInputAction: state.isShowPwd.value?TextInputAction.go:TextInputAction.next,
|
||||||
textInputAction: TextInputAction.send,
|
textInputAction: TextInputAction.send,
|
||||||
onSubmitted: (_) => easyThrottle('LOGIN_EASYTHROTTLE', () async{
|
enableInteractiveSelection: false,
|
||||||
|
onSubmitted: (_) => easyThrottle('LOGIN_EASYTHROTTLE', () async {
|
||||||
Utils.hideKeyboard();
|
Utils.hideKeyboard();
|
||||||
await Future.delayed(const Duration(milliseconds: 300));
|
await Future.delayed(const Duration(milliseconds: 300));
|
||||||
WidgetsBinding.instance.addPostFrameCallback((_) => logic.toLogin(context,upgradeLogic));
|
WidgetsBinding.instance
|
||||||
|
.addPostFrameCallback((_) => logic.toLogin(context, upgradeLogic));
|
||||||
}),
|
}),
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
color: const Color(0xFF434343),
|
color: const Color(0xFF434343),
|
||||||
|
|
@ -203,7 +208,9 @@ class _LoginPageState extends State<LoginPage> {
|
||||||
child: Padding(
|
child: Padding(
|
||||||
padding: EdgeInsets.only(right: 5.r),
|
padding: EdgeInsets.only(right: 5.r),
|
||||||
child: Image.asset(
|
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,
|
width: 15.r,
|
||||||
height: 15.r,
|
height: 15.r,
|
||||||
),
|
),
|
||||||
|
|
@ -252,7 +259,8 @@ class _LoginPageState extends State<LoginPage> {
|
||||||
(Set<WidgetState> states) {
|
(Set<WidgetState> states) {
|
||||||
if (states.contains(WidgetState.selected)) {
|
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));
|
return BorderSide(width: 1.r, color: const Color(0xFF434343));
|
||||||
|
|
@ -288,10 +296,10 @@ class _LoginPageState extends State<LoginPage> {
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
InkWell(
|
InkWell(
|
||||||
onTap: () => easyThrottle('LOGIN_EASYTHROTTLE', () async{
|
onTap: () => easyThrottle('LOGIN_EASYTHROTTLE', () async {
|
||||||
Utils.hideKeyboard();
|
Utils.hideKeyboard();
|
||||||
await Future.delayed(Duration.zero);
|
await Future.delayed(Duration.zero);
|
||||||
WidgetsBinding.instance.addPostFrameCallback((_) => logic.toLogin(context,upgradeLogic));
|
WidgetsBinding.instance.addPostFrameCallback((_) => logic.toLogin(context, upgradeLogic));
|
||||||
}),
|
}),
|
||||||
child: Obx(() {
|
child: Obx(() {
|
||||||
return Container(
|
return Container(
|
||||||
|
|
@ -353,7 +361,8 @@ class _LoginPageState extends State<LoginPage> {
|
||||||
),
|
),
|
||||||
InkWell(
|
InkWell(
|
||||||
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(
|
child: quickText(
|
||||||
'请仔细阅读',
|
'请仔细阅读',
|
||||||
|
|
@ -362,7 +371,8 @@ class _LoginPageState extends State<LoginPage> {
|
||||||
),
|
),
|
||||||
InkWell(
|
InkWell(
|
||||||
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: Text(
|
child: Text(
|
||||||
'《用户协议》',
|
'《用户协议》',
|
||||||
|
|
@ -371,7 +381,8 @@ class _LoginPageState extends State<LoginPage> {
|
||||||
),
|
),
|
||||||
InkWell(
|
InkWell(
|
||||||
onTap: () {
|
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(
|
child: quickText(
|
||||||
'《隐私协议》',
|
'《隐私协议》',
|
||||||
|
|
|
||||||
|
|
@ -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.6+7
|
version: 1.0.7+8
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: '>=3.4.1 <4.0.0'
|
sdk: '>=3.4.1 <4.0.0'
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue