fix: 1、完成一键登录功能
This commit is contained in:
parent
2442e599b6
commit
64e5a03f77
@ -1,5 +1,8 @@
|
|||||||
|
import 'dart:io';
|
||||||
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
|
import 'package:jverify/jverify.dart';
|
||||||
import 'package:star_lock/appRouters.dart';
|
import 'package:star_lock/appRouters.dart';
|
||||||
import 'package:star_lock/app_settings/app_settings.dart';
|
import 'package:star_lock/app_settings/app_settings.dart';
|
||||||
import 'package:star_lock/blue/blue_manage.dart';
|
import 'package:star_lock/blue/blue_manage.dart';
|
||||||
@ -14,6 +17,7 @@ import '../../mine/mine/starLockMine_logic.dart';
|
|||||||
import '../../network/api_repository.dart';
|
import '../../network/api_repository.dart';
|
||||||
import '../../tools/dateTool.dart';
|
import '../../tools/dateTool.dart';
|
||||||
import '../../tools/eventBusEventManage.dart';
|
import '../../tools/eventBusEventManage.dart';
|
||||||
|
import '../../tools/jverify_one_click_login.dart';
|
||||||
import '../../tools/showTipView.dart';
|
import '../../tools/showTipView.dart';
|
||||||
import '../../tools/storage.dart';
|
import '../../tools/storage.dart';
|
||||||
import '../register/entity/checkIP_entity.dart';
|
import '../register/entity/checkIP_entity.dart';
|
||||||
@ -73,6 +77,40 @@ class StarLockLoginLogic extends BaseGetXController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Future<void> oneClickLoginAction() async {
|
||||||
|
Map? map = await JverifyOneClickLoginManage().loginAuth();
|
||||||
|
final int code = map!['code'];
|
||||||
|
final String content = map['message'];
|
||||||
|
// final String operator = map['operator'];
|
||||||
|
AppLog.log('1111code:$code content:$content');
|
||||||
|
if (code == 6000) {
|
||||||
|
// final LoginEntity entity = await ApiRepository.to.oneClickLogin(
|
||||||
|
// loginType: '3', loginToken: content, deviceInfo: state.deviceInfoMap);
|
||||||
|
// if (entity.errorCode!.codeIsSuccessful) {
|
||||||
|
// UmengCommonSdk.onEvent('login_result', {
|
||||||
|
// 'account': state.emailOrPhone.value,
|
||||||
|
// 'date': DateTool().getNowDateWithType(1),
|
||||||
|
// 'login_res': '成功',
|
||||||
|
// });
|
||||||
|
//
|
||||||
|
// Storage.saveLoginData(entity.data);
|
||||||
|
// Storage.setBool(saveIsVip, entity.data!.isVip == 1);
|
||||||
|
// eventBus.fire(MineInfoChangeRefreshUI());
|
||||||
|
// if (Get.isRegistered<LockMainLogic>()) {
|
||||||
|
// Get.find<LockMainLogic>().getStarLockInfo(isUnShowLoading: true);
|
||||||
|
// }
|
||||||
|
// Get.offNamedUntil(Routers.starLockMain, (Route route) => false);
|
||||||
|
// BlueManage().scanDevices.clear(); //清除设备缓存
|
||||||
|
// } else {
|
||||||
|
// UmengCommonSdk.onEvent('login_result', {
|
||||||
|
// 'account': state.emailOrPhone.value,
|
||||||
|
// 'date': DateTool().getNowDateWithType(1),
|
||||||
|
// 'login_res': '${entity.errorCode}--${entity.errorMsg}',
|
||||||
|
// });
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Future<void> checkIpAction() async {
|
Future<void> checkIpAction() async {
|
||||||
final CheckIPEntity entity = await ApiRepository.to.checkIpAction(ip: '');
|
final CheckIPEntity entity = await ApiRepository.to.checkIpAction(ip: '');
|
||||||
if (entity.errorCode!.codeIsSuccessful) {
|
if (entity.errorCode!.codeIsSuccessful) {
|
||||||
@ -110,6 +148,15 @@ class StarLockLoginLogic extends BaseGetXController {
|
|||||||
state.canNext.value = state.pwdIsOK && state.isEmailOrPhone;
|
state.canNext.value = state.pwdIsOK && state.isEmailOrPhone;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Future<void> onInit() async {
|
||||||
|
super.onInit();
|
||||||
|
|
||||||
|
JverifyOneClickLoginManage();
|
||||||
|
state.isCheckVerifyEnable.value =
|
||||||
|
await JverifyOneClickLoginManage().checkVerifyEnable();
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void onClose() {
|
void onClose() {
|
||||||
state.onClose();
|
state.onClose();
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
|
import 'package:flutter/cupertino.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';
|
||||||
@ -12,6 +13,7 @@ import '../../appRouters.dart';
|
|||||||
import '../../app_settings/app_colors.dart';
|
import '../../app_settings/app_colors.dart';
|
||||||
import '../../common/XSConstantMacro/XSConstantMacro.dart';
|
import '../../common/XSConstantMacro/XSConstantMacro.dart';
|
||||||
import '../../tools/commonItem.dart';
|
import '../../tools/commonItem.dart';
|
||||||
|
import '../../tools/jverify_one_click_login.dart';
|
||||||
import '../../tools/submitBtn.dart';
|
import '../../tools/submitBtn.dart';
|
||||||
import '../../tools/tf_loginInput.dart';
|
import '../../tools/tf_loginInput.dart';
|
||||||
import '../../tools/titleAppBar.dart';
|
import '../../tools/titleAppBar.dart';
|
||||||
@ -234,6 +236,24 @@ class _StarLockLoginPageState extends State<StarLockLoginPage> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
: null)),
|
: null)),
|
||||||
|
SizedBox(height: 20.w),
|
||||||
|
Obx(() => Visibility(
|
||||||
|
visible: state.isCheckVerifyEnable.value,
|
||||||
|
child: SubmitBtn(
|
||||||
|
btnName: '一键登录',
|
||||||
|
fontSize: 28.sp,
|
||||||
|
borderRadius: 20.w,
|
||||||
|
padding: EdgeInsets.only(top: 25.w, bottom: 25.w),
|
||||||
|
// isDisabled: state.canNext.value,
|
||||||
|
onClick: () {
|
||||||
|
if (state.agree.value == false) {
|
||||||
|
logic.showToast('请先同意用户协议及隐私政策'.tr);
|
||||||
|
return;
|
||||||
|
} else {
|
||||||
|
logic.oneClickLoginAction();
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
)),
|
||||||
SizedBox(height: 50.w),
|
SizedBox(height: 50.w),
|
||||||
Row(
|
Row(
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
|
|||||||
@ -45,6 +45,8 @@ class StarLockLoginState {
|
|||||||
'deviceType': 0
|
'deviceType': 0
|
||||||
}.obs;
|
}.obs;
|
||||||
|
|
||||||
|
RxBool isCheckVerifyEnable = false.obs;
|
||||||
|
|
||||||
void onClose() {
|
void onClose() {
|
||||||
// emailOrPhoneController.dispose();
|
// emailOrPhoneController.dispose();
|
||||||
// pwdController.dispose();
|
// pwdController.dispose();
|
||||||
|
|||||||
@ -184,21 +184,17 @@ class _StarLockLoginPageState extends State<StarLockLoginXHJPage> {
|
|||||||
width: Get.width,
|
width: Get.width,
|
||||||
child: ElevatedButton(
|
child: ElevatedButton(
|
||||||
onPressed: () async {
|
onPressed: () async {
|
||||||
final dynamic data =
|
if (state.agree.value == false) {
|
||||||
await Get.toNamed(Routers.starLockRegisterPage);
|
logic.showToast('请先同意用户协议及隐私政策'.tr);
|
||||||
if (data != null) {
|
return;
|
||||||
state.emailOrPhoneController.text =
|
} else {
|
||||||
data['phoneOrEmailStr'];
|
logic.oneClickLoginAction();
|
||||||
logic.checkNext(state.emailOrPhoneController);
|
|
||||||
state.pwdController.text = data['pwd'];
|
|
||||||
logic.checkNext(state.pwdController);
|
|
||||||
setState(() {});
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
style: ElevatedButton.styleFrom(
|
style: ElevatedButton.styleFrom(
|
||||||
backgroundColor: AppColors.mainColor),
|
backgroundColor: AppColors.mainColor),
|
||||||
child: Text(
|
child: Text(
|
||||||
'注册'.tr,
|
'一键登录'.tr,
|
||||||
style:
|
style:
|
||||||
TextStyle(fontSize: 22.sp, color: Colors.white),
|
TextStyle(fontSize: 22.sp, color: Colors.white),
|
||||||
),
|
),
|
||||||
@ -229,25 +225,29 @@ class _StarLockLoginPageState extends State<StarLockLoginXHJPage> {
|
|||||||
child: SizedBox(
|
child: SizedBox(
|
||||||
width: 10.sp,
|
width: 10.sp,
|
||||||
)),
|
)),
|
||||||
if (F.isLite)
|
GestureDetector(
|
||||||
Container()
|
child: SizedBox(
|
||||||
else
|
// width: 150.w,
|
||||||
GestureDetector(
|
height: 50.h,
|
||||||
child: SizedBox(
|
// color: Colors.red,
|
||||||
// width: 150.w,
|
child: Center(
|
||||||
height: 50.h,
|
child: Text('注册'.tr,
|
||||||
// color: Colors.red,
|
style: TextStyle(
|
||||||
child: Center(
|
fontSize: 22.sp,
|
||||||
child: Text('演示模式'.tr,
|
color: AppColors.mainColor)),
|
||||||
style: TextStyle(
|
|
||||||
fontSize: 22.sp,
|
|
||||||
color: AppColors.mainColor)),
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
onTap: () {
|
),
|
||||||
Get.toNamed(Routers.demoModeLockDetailPage);
|
onTap: () async {
|
||||||
},
|
final dynamic data =
|
||||||
)
|
await Get.toNamed(Routers.starLockRegisterPage);
|
||||||
|
state.emailOrPhoneController.text =
|
||||||
|
data['phoneOrEmailStr'];
|
||||||
|
logic.checkNext(state.emailOrPhoneController);
|
||||||
|
state.pwdController.text = data['pwd'];
|
||||||
|
logic.checkNext(state.pwdController);
|
||||||
|
setState(() {});
|
||||||
|
},
|
||||||
|
)
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
|||||||
@ -4,7 +4,7 @@ import 'flavors.dart';
|
|||||||
import 'main.dart' as runner;
|
import 'main.dart' as runner;
|
||||||
|
|
||||||
Future<void> main() async {
|
Future<void> main() async {
|
||||||
F.appFlavor = Flavor.sky;
|
F.appFlavor = Flavor.xhj;
|
||||||
// AppLog.log('local调用了main函数');
|
// AppLog.log('local调用了main函数');
|
||||||
await runner.main();
|
await runner.main();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5,6 +5,7 @@ abstract class Api {
|
|||||||
final String getSliderVerifyImgUrl = '/user/getSliderVerifyImg';
|
final String getSliderVerifyImgUrl = '/user/getSliderVerifyImg';
|
||||||
final String checkImgUrl = '/user/isSliderValid';
|
final String checkImgUrl = '/user/isSliderValid';
|
||||||
final String loginUrl = '/user/login';
|
final String loginUrl = '/user/login';
|
||||||
|
final String oneClickLoginUrl = '/user/quickLogin'; // 一键登录
|
||||||
final String resetPasswordURL = '/user/resetPassword'; //重置密码
|
final String resetPasswordURL = '/user/resetPassword'; //重置密码
|
||||||
final String getCountryRegionURL = '/system/listCountry'; //获取国家或地区
|
final String getCountryRegionURL = '/system/listCountry'; //获取国家或地区
|
||||||
final String electronicKeyListURL = '/key/listUser'; //电子钥匙列表
|
final String electronicKeyListURL = '/key/listUser'; //电子钥匙列表
|
||||||
|
|||||||
@ -80,6 +80,17 @@ class ApiProvider extends BaseProvider {
|
|||||||
'deviceInfo': deviceInfo,
|
'deviceInfo': deviceInfo,
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
Future<Response> oneClickLogin(
|
||||||
|
String loginType, String loginToken, Map deviceInfo) =>
|
||||||
|
post(
|
||||||
|
oneClickLoginUrl.toUrl,
|
||||||
|
jsonEncode({
|
||||||
|
'loginType': loginType,
|
||||||
|
'platId': '2',
|
||||||
|
'loginToken': loginToken,
|
||||||
|
'deviceInfo': deviceInfo,
|
||||||
|
}));
|
||||||
|
|
||||||
Future<Response> resetPassword(
|
Future<Response> resetPassword(
|
||||||
String countryCode,
|
String countryCode,
|
||||||
String account,
|
String account,
|
||||||
|
|||||||
@ -145,6 +145,16 @@ class ApiRepository {
|
|||||||
return LoginEntity.fromJson(res.body);
|
return LoginEntity.fromJson(res.body);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//登录
|
||||||
|
Future<LoginEntity> oneClickLogin(
|
||||||
|
{required String loginType,
|
||||||
|
required String loginToken,
|
||||||
|
required Map deviceInfo}) async {
|
||||||
|
final res =
|
||||||
|
await apiProvider.oneClickLogin(loginType, loginToken, deviceInfo);
|
||||||
|
return LoginEntity.fromJson(res.body);
|
||||||
|
}
|
||||||
|
|
||||||
//重置密码
|
//重置密码
|
||||||
Future<LoginEntity> resetPassword(
|
Future<LoginEntity> resetPassword(
|
||||||
String countryCode,
|
String countryCode,
|
||||||
|
|||||||
476
lib/tools/jverify_one_click_login.dart
Normal file
476
lib/tools/jverify_one_click_login.dart
Normal file
@ -0,0 +1,476 @@
|
|||||||
|
import 'package:jverify/jverify.dart';
|
||||||
|
|
||||||
|
import '../app_settings/app_settings.dart';
|
||||||
|
import '../flavors.dart';
|
||||||
|
|
||||||
|
class JverifyOneClickLoginManage {
|
||||||
|
factory JverifyOneClickLoginManage() => shareManager()!;
|
||||||
|
|
||||||
|
JverifyOneClickLoginManage._init() {
|
||||||
|
_initSDK();
|
||||||
|
}
|
||||||
|
|
||||||
|
static JverifyOneClickLoginManage? _manager;
|
||||||
|
|
||||||
|
static JverifyOneClickLoginManage? shareManager() {
|
||||||
|
_manager ??= JverifyOneClickLoginManage._init();
|
||||||
|
return _manager;
|
||||||
|
}
|
||||||
|
|
||||||
|
JverifyOneClickLoginManage? get manager => shareManager();
|
||||||
|
Jverify jverify = Jverify();
|
||||||
|
|
||||||
|
/// 统一 key
|
||||||
|
String f_result_key = 'result';
|
||||||
|
|
||||||
|
/// 错误码
|
||||||
|
String f_code_key = 'code';
|
||||||
|
|
||||||
|
/// 回调的提示信息,统一返回 flutter 为 message
|
||||||
|
String f_msg_key = 'message';
|
||||||
|
|
||||||
|
/// 运营商信息
|
||||||
|
String f_opr_key = 'operator';
|
||||||
|
|
||||||
|
Future<void> _initSDK() async {
|
||||||
|
await initPlatformState();
|
||||||
|
|
||||||
|
isInitSuccess();
|
||||||
|
|
||||||
|
getToken();
|
||||||
|
|
||||||
|
preLogin();
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<void> initPlatformState() async {
|
||||||
|
// 初始化 SDK 之前添加监听
|
||||||
|
jverify.addSDKSetupCallBackListener((JVSDKSetupEvent event) {
|
||||||
|
print('receive sdk setup call back event :${event.toMap()}');
|
||||||
|
});
|
||||||
|
|
||||||
|
jverify.setDebugMode(true); // 打开调试模式
|
||||||
|
jverify.setCollectionAuth(true);
|
||||||
|
if (F.isSKY) {
|
||||||
|
jverify.setup(
|
||||||
|
appKey: '7ff37d174c1a568a89e98dad', //"你自己应用的 AppKey",
|
||||||
|
channel: 'devloper-default'); // 初始化sdk, appKey 和 channel 只对ios设置有效
|
||||||
|
AppLog.log('appKey:7ff37d174c1a568a89e98dad');
|
||||||
|
} else {
|
||||||
|
jverify.setup(
|
||||||
|
appKey: '251fc8074820d122b6de58d2', //"你自己应用的 AppKey",
|
||||||
|
channel: 'devloper-default'); // 初始化sdk, appKey 和 channel 只对ios设置有效
|
||||||
|
AppLog.log('appKey:251fc8074820d122b6de58d2');
|
||||||
|
}
|
||||||
|
|
||||||
|
// If the widget was removed from the tree while the asynchronous platform
|
||||||
|
// message was in flight, we want to discard the reply rather than calling
|
||||||
|
// setState to update our non-existent appearance.
|
||||||
|
// if (!mounted) return;
|
||||||
|
|
||||||
|
/// 授权页面点击时间监听
|
||||||
|
jverify.addAuthPageEventListener((JVAuthPageEvent event) {
|
||||||
|
print('receive auth page event :${event.toMap()}');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/// sdk 初始化是否完成
|
||||||
|
void isInitSuccess() {
|
||||||
|
jverify.isInitSuccess().then((map) {
|
||||||
|
final bool result = map[f_result_key];
|
||||||
|
AppLog.log('sdk 初始化结果:$map');
|
||||||
|
if (result) {
|
||||||
|
AppLog.log('sdk 初始化成功');
|
||||||
|
} else {
|
||||||
|
AppLog.log('sdk 初始化失败');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/// 判断当前网络环境是否可以发起认证
|
||||||
|
Future<bool> checkVerifyEnable() async {
|
||||||
|
final Map map = await jverify.checkVerifyEnable();
|
||||||
|
final bool result = map[f_result_key];
|
||||||
|
return result;
|
||||||
|
// state.jverify.checkVerifyEnable().then((map) {
|
||||||
|
// final bool result = map[f_result_key];
|
||||||
|
// if (result) {
|
||||||
|
// AppLog.log('当前网络环境【支持认证】!');
|
||||||
|
// } else {
|
||||||
|
// AppLog.log('当前网络环境【不支持认证】!');
|
||||||
|
// }
|
||||||
|
// return result;
|
||||||
|
// });
|
||||||
|
}
|
||||||
|
|
||||||
|
void getToken() {
|
||||||
|
jverify.checkVerifyEnable().then((map) {
|
||||||
|
final bool result = map[f_result_key];
|
||||||
|
if (result) {
|
||||||
|
jverify.getToken().then((map) {
|
||||||
|
final int code = map[f_code_key];
|
||||||
|
final String token = map[f_msg_key];
|
||||||
|
final String operator = map[f_opr_key];
|
||||||
|
AppLog.log('getToken code:$code token:$token operator:$operator');
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
AppLog.log('[2016],msg = 当前网络环境不支持认证');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/// 登录预取号
|
||||||
|
void preLogin() {
|
||||||
|
jverify.checkVerifyEnable().then((map) {
|
||||||
|
final bool result = map[f_result_key];
|
||||||
|
if (result) {
|
||||||
|
jverify.preLogin().then((map) {
|
||||||
|
AppLog.log('预取号接口回调:${map.toString()}');
|
||||||
|
final int code = map[f_code_key];
|
||||||
|
final String message = map[f_msg_key];
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
AppLog.log('[2016],msg = 当前网络环境不支持认证');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/// SDK 请求授权一键登录
|
||||||
|
Future<Map?> loginAuth() async {
|
||||||
|
Map map = await jverify.checkVerifyEnable();
|
||||||
|
final bool result = map[f_result_key];
|
||||||
|
print('checkVerifyEnable $map');
|
||||||
|
//需要使用sms的时候不检查result
|
||||||
|
if (result) {
|
||||||
|
return await jverify.loginAuth(true);
|
||||||
|
// jverify.loginAuth(true).then((map) {
|
||||||
|
// /// 再,在回调里获取 loginAuth 接口异步返回数据(如果是通过添加 JVLoginAuthCallBackListener 监听来获取返回数据,则忽略此步骤)
|
||||||
|
// final int code = map[f_code_key];
|
||||||
|
// final String content = map[f_msg_key];
|
||||||
|
// final String operator = map[f_opr_key];
|
||||||
|
// AppLog.log(
|
||||||
|
// '通过接口异步返回,获取到 loginAuth 接口返回数据,code=$code,message = $content,operator = $operator');
|
||||||
|
// return map;
|
||||||
|
// });
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
// .then((map) {
|
||||||
|
// final bool result = map[f_result_key];
|
||||||
|
// print('checkVerifyEnable $map');
|
||||||
|
// //需要使用sms的时候不检查result
|
||||||
|
// if (result) {
|
||||||
|
// // if (true) {
|
||||||
|
// jverify.loginAuth(true).then((map) {
|
||||||
|
// /// 再,在回调里获取 loginAuth 接口异步返回数据(如果是通过添加 JVLoginAuthCallBackListener 监听来获取返回数据,则忽略此步骤)
|
||||||
|
// final int code = map[f_code_key];
|
||||||
|
// final String content = map[f_msg_key];
|
||||||
|
// final String operator = map[f_opr_key];
|
||||||
|
// AppLog.log(
|
||||||
|
// '通过接口异步返回,获取到 loginAuth 接口返回数据,code=$code,message = $content,operator = $operator');
|
||||||
|
// return map;
|
||||||
|
// });
|
||||||
|
|
||||||
|
// // final screenSize = MediaQuery.of(context).size;
|
||||||
|
// // final screenWidth = screenSize.width;
|
||||||
|
// // final screenHeight = screenSize.height;
|
||||||
|
// final bool isiOS = Platform.isIOS;
|
||||||
|
//
|
||||||
|
// /// 自定义授权的 UI 界面,以下设置的图片必须添加到资源文件里,
|
||||||
|
// /// android项目将图片存放至drawable文件夹下,可使用图片选择器的文件名,例如:btn_login.xml,入参为"btn_login"。
|
||||||
|
// /// ios项目存放在 Assets.xcassets。
|
||||||
|
// ///
|
||||||
|
// final JVUIConfig uiConfig = JVUIConfig();
|
||||||
|
// // uiConfig.authBGGifPath = "main_gif";
|
||||||
|
// // uiConfig.authBGVideoPath="main_vi";
|
||||||
|
// uiConfig.authBGVideoPath =
|
||||||
|
// 'http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4';
|
||||||
|
// uiConfig.authBGVideoImgPath = 'main_v_bg';
|
||||||
|
//
|
||||||
|
// uiConfig.navHidden = !isiOS;
|
||||||
|
// // uiConfig.navColor = Colors.red.value;
|
||||||
|
// // uiConfig.navText = "登录";
|
||||||
|
// // uiConfig.navTextColor = Colors.blue.value;
|
||||||
|
// // uiConfig.navReturnImgPath = "return_bg"; //图片必须存在
|
||||||
|
//
|
||||||
|
// uiConfig.logoWidth = 100;
|
||||||
|
// uiConfig.logoHeight = 80;
|
||||||
|
// //uiConfig.logoOffsetX = isiOS ? 0 : null;//(screenWidth/2 - uiConfig.logoWidth/2).toInt();
|
||||||
|
// uiConfig.logoOffsetY = 10;
|
||||||
|
// uiConfig.logoVerticalLayoutItem = JVIOSLayoutItem.ItemSuper;
|
||||||
|
// uiConfig.logoHidden = false;
|
||||||
|
// uiConfig.logoImgPath = 'logo';
|
||||||
|
//
|
||||||
|
// uiConfig.numberFieldWidth = 200;
|
||||||
|
// uiConfig.numberFieldHeight = 40;
|
||||||
|
// //uiConfig.numFieldOffsetX = isiOS ? 0 : null;//(screenWidth/2 - uiConfig.numberFieldWidth/2).toInt();
|
||||||
|
// uiConfig.numFieldOffsetY = isiOS ? 20 : 120;
|
||||||
|
// uiConfig.numberVerticalLayoutItem = JVIOSLayoutItem.ItemLogo;
|
||||||
|
// uiConfig.numberColor = Colors.blue.value;
|
||||||
|
// uiConfig.numberSize = 18;
|
||||||
|
//
|
||||||
|
// uiConfig.sloganOffsetY = isiOS ? 20 : 160;
|
||||||
|
// uiConfig.sloganVerticalLayoutItem = JVIOSLayoutItem.ItemNumber;
|
||||||
|
// uiConfig.sloganTextColor = Colors.black.value;
|
||||||
|
// uiConfig.sloganTextSize = 15;
|
||||||
|
// // uiConfig.slogan
|
||||||
|
// //uiConfig.sloganHidden = 0;
|
||||||
|
//
|
||||||
|
// uiConfig.logBtnWidth = 220;
|
||||||
|
// uiConfig.logBtnHeight = 50;
|
||||||
|
// //uiConfig.logBtnOffsetX = isiOS ? 0 : null;//(screenWidth/2 - uiConfig.logBtnWidth/2).toInt();
|
||||||
|
// uiConfig.logBtnOffsetY = isiOS ? 20 : 230;
|
||||||
|
// uiConfig.logBtnVerticalLayoutItem = JVIOSLayoutItem.ItemSlogan;
|
||||||
|
// uiConfig.logBtnText = '登录按钮';
|
||||||
|
// uiConfig.logBtnTextColor = Colors.brown.value;
|
||||||
|
// uiConfig.logBtnTextSize = 16;
|
||||||
|
// uiConfig.logBtnTextBold = true;
|
||||||
|
// uiConfig.loginBtnNormalImage = 'login_btn_normal'; //图片必须存在
|
||||||
|
// uiConfig.loginBtnPressedImage = 'login_btn_press'; //图片必须存在
|
||||||
|
// uiConfig.loginBtnUnableImage = 'login_btn_unable'; //图片必须存在
|
||||||
|
//
|
||||||
|
// uiConfig.privacyHintToast =
|
||||||
|
// true; //only android 设置隐私条款不选中时点击登录按钮默认显示toast。
|
||||||
|
//
|
||||||
|
// uiConfig.privacyState = false; //设置默认勾选
|
||||||
|
// uiConfig.privacyCheckboxSize = 20;
|
||||||
|
// uiConfig.checkedImgPath = 'check_image'; //图片必须存在
|
||||||
|
// uiConfig.uncheckedImgPath = 'uncheck_image'; //图片必须存在
|
||||||
|
// uiConfig.privacyCheckboxInCenter = true;
|
||||||
|
// uiConfig.privacyCheckboxHidden = false;
|
||||||
|
// uiConfig.isAlertPrivacyVc = true;
|
||||||
|
//
|
||||||
|
// //uiConfig.privacyOffsetX = isiOS ? (20 + uiConfig.privacyCheckboxSize) : null;
|
||||||
|
// uiConfig.privacyOffsetY = 15; // 距离底部距离
|
||||||
|
// uiConfig.privacyVerticalLayoutItem = JVIOSLayoutItem.ItemSuper;
|
||||||
|
// uiConfig.clauseName = '协议1';
|
||||||
|
// uiConfig.clauseUrl = 'http://www.baidu.com';
|
||||||
|
// uiConfig.clauseBaseColor = Colors.black.value;
|
||||||
|
// uiConfig.clauseNameTwo = '协议二';
|
||||||
|
// uiConfig.clauseUrlTwo = 'http://www.hao123.com';
|
||||||
|
// uiConfig.clauseColor = Colors.red.value;
|
||||||
|
// uiConfig.privacyText = ['1极', '4证'];
|
||||||
|
// uiConfig.privacyTextSize = 13;
|
||||||
|
// uiConfig.privacyItem = [
|
||||||
|
// JVPrivacy('自定义协议1', 'http://www.baidu.com',
|
||||||
|
// beforeName: '==', afterName: '++', separator: '*'),
|
||||||
|
// JVPrivacy('自定义协议2', 'http://www.baidu.com', separator: '、'),
|
||||||
|
// JVPrivacy('自定义协议3', 'http://www.baidu.com', separator: '、'),
|
||||||
|
// JVPrivacy('自定义协议4', 'http://www.baidu.com', separator: '、'),
|
||||||
|
// JVPrivacy('自定义协议5', 'http://www.baidu.com', separator: '、')
|
||||||
|
// ];
|
||||||
|
// uiConfig.textVerAlignment = 1;
|
||||||
|
// //uiConfig.privacyWithBookTitleMark = true;
|
||||||
|
// //uiConfig.privacyTextCenterGravity = false;
|
||||||
|
// uiConfig.authStatusBarStyle = JVIOSBarStyle.StatusBarStyleDarkContent;
|
||||||
|
// uiConfig.privacyStatusBarStyle = JVIOSBarStyle.StatusBarStyleDefault;
|
||||||
|
// uiConfig.modelTransitionStyle =
|
||||||
|
// JVIOSUIModalTransitionStyle.CrossDissolve;
|
||||||
|
//
|
||||||
|
// uiConfig.statusBarColorWithNav = true;
|
||||||
|
// // uiConfig.virtualButtonTransparent = true;
|
||||||
|
//
|
||||||
|
// uiConfig.privacyStatusBarColorWithNav = true;
|
||||||
|
// uiConfig.privacyVirtualButtonTransparent = true;
|
||||||
|
//
|
||||||
|
// uiConfig.needStartAnim = true;
|
||||||
|
// uiConfig.needCloseAnim = true;
|
||||||
|
// uiConfig.enterAnim = 'activity_slide_enter_bottom';
|
||||||
|
// uiConfig.exitAnim = 'activity_slide_exit_bottom';
|
||||||
|
//
|
||||||
|
// uiConfig.privacyNavColor = Colors.red.value;
|
||||||
|
// uiConfig.privacyNavTitleTextColor = Colors.blue.value;
|
||||||
|
// uiConfig.privacyNavTitleTextSize = 16;
|
||||||
|
//
|
||||||
|
// uiConfig.privacyNavTitleTitle = 'ios lai le'; //only ios
|
||||||
|
// uiConfig.privacyNavReturnBtnImage = 'back'; //图片必须存在;
|
||||||
|
//
|
||||||
|
// //协议二次弹窗内容设置 -iOS
|
||||||
|
// uiConfig.isAlertPrivacyVc = true;
|
||||||
|
// uiConfig.agreementAlertViewTitleTexSize = 18;
|
||||||
|
// uiConfig.agreementAlertViewTitleTextColor = Colors.red.value;
|
||||||
|
// uiConfig.agreementAlertViewContentTextAlignment =
|
||||||
|
// JVTextAlignmentType.center;
|
||||||
|
// uiConfig.agreementAlertViewContentTextFontSize = 16;
|
||||||
|
// uiConfig.agreementAlertViewLoginBtnNormalImagePath = 'login_btn_normal';
|
||||||
|
// uiConfig.agreementAlertViewLoginBtnPressedImagePath = 'login_btn_press';
|
||||||
|
// uiConfig.agreementAlertViewLoginBtnUnableImagePath = 'login_btn_unable';
|
||||||
|
// uiConfig.agreementAlertViewLogBtnTextColor = Colors.black.value;
|
||||||
|
//
|
||||||
|
// //协议二次弹窗内容设置 -Android
|
||||||
|
// final JVPrivacyCheckDialogConfig privacyCheckDialogConfig =
|
||||||
|
// JVPrivacyCheckDialogConfig();
|
||||||
|
// // privacyCheckDialogConfig.width = 250;
|
||||||
|
// // privacyCheckDialogConfig.height = 100;
|
||||||
|
// privacyCheckDialogConfig.title = '测试协议标题';
|
||||||
|
// privacyCheckDialogConfig.offsetX = 0;
|
||||||
|
// privacyCheckDialogConfig.offsetY = 0;
|
||||||
|
// privacyCheckDialogConfig.logBtnText = '同11意';
|
||||||
|
// privacyCheckDialogConfig.titleTextSize = 22;
|
||||||
|
// privacyCheckDialogConfig.gravity = 'center';
|
||||||
|
// privacyCheckDialogConfig.titleTextColor = Colors.black.value;
|
||||||
|
// privacyCheckDialogConfig.contentTextGravity = 'left';
|
||||||
|
// privacyCheckDialogConfig.contentTextSize = 14;
|
||||||
|
// privacyCheckDialogConfig.logBtnImgPath = 'login_btn_normal';
|
||||||
|
// privacyCheckDialogConfig.logBtnTextColor = Colors.black.value;
|
||||||
|
// privacyCheckDialogConfig.logBtnMarginT = 20;
|
||||||
|
// privacyCheckDialogConfig.logBtnMarginB = 20;
|
||||||
|
// privacyCheckDialogConfig.logBtnMarginL = 10;
|
||||||
|
// privacyCheckDialogConfig.logBtnWidth = 140;
|
||||||
|
// privacyCheckDialogConfig.logBtnHeight = 40;
|
||||||
|
//
|
||||||
|
// /// 添加自定义的 控件 到dialog
|
||||||
|
// final List<JVCustomWidget> dialogWidgetList = [];
|
||||||
|
// const String btn_dialog_widgetId =
|
||||||
|
// 'jv_add_custom_dialog_button'; // 标识控件 id
|
||||||
|
// final JVCustomWidget buttonDialogWidget =
|
||||||
|
// JVCustomWidget(btn_dialog_widgetId, JVCustomWidgetType.button);
|
||||||
|
// buttonDialogWidget.title = '取消';
|
||||||
|
// buttonDialogWidget.left = 163;
|
||||||
|
// buttonDialogWidget.top = 142;
|
||||||
|
// buttonDialogWidget.width = 140;
|
||||||
|
// buttonDialogWidget.height = 40;
|
||||||
|
// buttonDialogWidget.textAlignment = JVTextAlignmentType.center;
|
||||||
|
// buttonDialogWidget.btnNormalImageName = 'main_btn_other';
|
||||||
|
// buttonDialogWidget.btnPressedImageName = 'main_btn_other';
|
||||||
|
// // buttonDialogWidget.backgroundColor = Colors.yellow.value;
|
||||||
|
// //buttonWidget.textAlignment = JVTextAlignmentType.left;
|
||||||
|
//
|
||||||
|
// // 添加点击事件监听
|
||||||
|
// jverify.addClikWidgetEventListener(btn_dialog_widgetId, (eventId) {
|
||||||
|
// AppLog.log('receive listener - click dialog widget event :$eventId');
|
||||||
|
// if (btn_dialog_widgetId == eventId) {
|
||||||
|
// AppLog.log('receive listener - 点击【新加 dialog button】');
|
||||||
|
// }
|
||||||
|
// });
|
||||||
|
// dialogWidgetList.add(buttonDialogWidget);
|
||||||
|
// privacyCheckDialogConfig.widgets = dialogWidgetList;
|
||||||
|
// uiConfig.privacyCheckDialogConfig = privacyCheckDialogConfig;
|
||||||
|
//
|
||||||
|
// //sms
|
||||||
|
// final JVSMSUIConfig smsConfig = JVSMSUIConfig();
|
||||||
|
// smsConfig.smsPrivacyBeanList = [
|
||||||
|
// JVPrivacy('自定义协议1', 'http://www.baidu.com',
|
||||||
|
// beforeName: '==', afterName: '++', separator: '*')
|
||||||
|
// ];
|
||||||
|
// smsConfig.enableSMSService = true;
|
||||||
|
// uiConfig.smsUIConfig = smsConfig;
|
||||||
|
//
|
||||||
|
// uiConfig.setIsPrivacyViewDarkMode = false; //协议页面是否支持暗黑模式
|
||||||
|
//
|
||||||
|
// //弹框模式
|
||||||
|
// // JVPopViewConfig popViewConfig = JVPopViewConfig();
|
||||||
|
// // popViewConfig.width = (screenWidth - 100.0).toInt();
|
||||||
|
// // popViewConfig.height = (screenHeight - 150.0).toInt();
|
||||||
|
//
|
||||||
|
// // uiConfig.popViewConfig = popViewConfig;
|
||||||
|
//
|
||||||
|
// /// 添加自定义的 控件 到授权界面
|
||||||
|
// final List<JVCustomWidget> widgetList = [];
|
||||||
|
//
|
||||||
|
// const String text_widgetId = 'jv_add_custom_text'; // 标识控件 id
|
||||||
|
// final JVCustomWidget textWidget =
|
||||||
|
// JVCustomWidget(text_widgetId, JVCustomWidgetType.textView);
|
||||||
|
// textWidget.title = '新加 text view 控件';
|
||||||
|
// textWidget.left = 20;
|
||||||
|
// textWidget.top = 360;
|
||||||
|
// textWidget.width = 200;
|
||||||
|
// textWidget.height = 40;
|
||||||
|
// textWidget.backgroundColor = Colors.yellow.value;
|
||||||
|
// textWidget.isShowUnderline = true;
|
||||||
|
// textWidget.textAlignment = JVTextAlignmentType.center;
|
||||||
|
// textWidget.isClickEnable = true;
|
||||||
|
//
|
||||||
|
// // 添加点击事件监听
|
||||||
|
// jverify.addClikWidgetEventListener(text_widgetId, (eventId) {
|
||||||
|
// AppLog.log('receive listener - click widget event :$eventId');
|
||||||
|
// if (text_widgetId == eventId) {
|
||||||
|
// AppLog.log('receive listener - 点击【新加 text】');
|
||||||
|
// }
|
||||||
|
// });
|
||||||
|
// widgetList.add(textWidget);
|
||||||
|
//
|
||||||
|
// const String btn_widgetId = 'jv_add_custom_button'; // 标识控件 id
|
||||||
|
// final JVCustomWidget buttonWidget =
|
||||||
|
// JVCustomWidget(btn_widgetId, JVCustomWidgetType.button);
|
||||||
|
// buttonWidget.title = '新加 button 控件';
|
||||||
|
// buttonWidget.left = 100;
|
||||||
|
// buttonWidget.top = 400;
|
||||||
|
// buttonWidget.width = 150;
|
||||||
|
// buttonWidget.height = 40;
|
||||||
|
// buttonWidget.isShowUnderline = true;
|
||||||
|
// buttonWidget.backgroundColor = Colors.brown.value;
|
||||||
|
// //buttonWidget.btnNormalImageName = "";
|
||||||
|
// //buttonWidget.btnPressedImageName = "";
|
||||||
|
// //buttonWidget.textAlignment = JVTextAlignmentType.left;
|
||||||
|
//
|
||||||
|
// // 添加点击事件监听
|
||||||
|
// jverify.addClikWidgetEventListener(btn_widgetId, (eventId) {
|
||||||
|
// AppLog.log('receive listener - click widget event :$eventId');
|
||||||
|
// if (btn_widgetId == eventId) {
|
||||||
|
// AppLog.log('receive listener - 点击【新加 button】');
|
||||||
|
// }
|
||||||
|
// });
|
||||||
|
// widgetList.add(buttonWidget);
|
||||||
|
//
|
||||||
|
// // 设置iOS的二次弹窗按钮
|
||||||
|
// uiConfig.agreementAlertViewWidgets = dialogWidgetList;
|
||||||
|
// uiConfig.agreementAlertViewUIFrames = {
|
||||||
|
// 'superViewFrame': [10, 60, 280, 300],
|
||||||
|
// 'alertViewFrame': [0, 0, 280, 300],
|
||||||
|
// 'titleFrame': [10, 10, 260, 40],
|
||||||
|
// 'contentFrame': [15, 60, 250, 110],
|
||||||
|
// 'buttonFrame': [10, 200, 100, 40]
|
||||||
|
// };
|
||||||
|
//
|
||||||
|
// /// 步骤 1:调用接口设置 UI
|
||||||
|
// jverify.setCustomAuthorizationView(true, uiConfig,
|
||||||
|
// landscapeConfig: uiConfig, widgets: widgetList);
|
||||||
|
// if (!isSms) {
|
||||||
|
// /// 步骤 2:调用一键登录接口
|
||||||
|
// jverify.loginAuthSyncApi2(
|
||||||
|
// autoDismiss: true,
|
||||||
|
// enableSms: true,
|
||||||
|
// loginAuthcallback: (event) {
|
||||||
|
// AppLog.log(
|
||||||
|
// '获取到 loginAuthSyncApi 接口返回数据,code=${event.code},message = ${event.message},operator = ${event.operator}');
|
||||||
|
// });
|
||||||
|
// } else {
|
||||||
|
// /// 步骤 2:调用短信登录接口
|
||||||
|
// jverify.smsAuth(
|
||||||
|
// autoDismiss: true,
|
||||||
|
// smsCallback: (event) {
|
||||||
|
// AppLog.log(
|
||||||
|
// '获取到 smsAuth 接口返回数据,code=${event.code},message = ${event.message},phone = ${event.phone}');
|
||||||
|
// });
|
||||||
|
// }
|
||||||
|
// } else {
|
||||||
|
/* 弹框模式
|
||||||
|
JVPopViewConfig popViewConfig = JVPopViewConfig();
|
||||||
|
popViewConfig.width = (screenWidth - 100.0).toInt();
|
||||||
|
popViewConfig.height = (screenHeight - 150.0).toInt();
|
||||||
|
|
||||||
|
uiConfig.popViewConfig = popViewConfig;
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
/// 方式二:使用异步接口 (如果想使用异步接口,则忽略此步骤,看方式二)
|
||||||
|
|
||||||
|
/// 先,执行异步的一键登录接口
|
||||||
|
jverify.loginAuth(true).then((map) {
|
||||||
|
|
||||||
|
/// 再,在回调里获取 loginAuth 接口异步返回数据(如果是通过添加 JVLoginAuthCallBackListener 监听来获取返回数据,则忽略此步骤)
|
||||||
|
int code = map[f_code_key];
|
||||||
|
String content = map[f_msg_key];
|
||||||
|
String operator = map[f_opr_key];
|
||||||
|
setState(() {
|
||||||
|
_hideLoading();
|
||||||
|
_result = "接口异步返回数据:[$code] message = $content";
|
||||||
|
});
|
||||||
|
print("通过接口异步返回,获取到 loginAuth 接口返回数据,code=$code,message = $content,operator = $operator");
|
||||||
|
});
|
||||||
|
|
||||||
|
*/
|
||||||
|
// }
|
||||||
|
// });
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -250,7 +250,7 @@ dependencies:
|
|||||||
open_filex: ^4.4.0
|
open_filex: ^4.4.0
|
||||||
|
|
||||||
umeng_common_sdk: 1.2.7
|
umeng_common_sdk: 1.2.7
|
||||||
|
jverify: 3.0.0
|
||||||
dependency_overrides:
|
dependency_overrides:
|
||||||
#强制设置google_maps_flutter_ios 为 2.5.2
|
#强制设置google_maps_flutter_ios 为 2.5.2
|
||||||
google_maps_flutter_ios: 2.5.2
|
google_maps_flutter_ios: 2.5.2
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user