2.5.2代码提交
@ -71,8 +71,8 @@ android {
|
|||||||
// For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration.
|
// For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration.
|
||||||
minSdkVersion 21
|
minSdkVersion 21
|
||||||
targetSdkVersion flutter.targetSdkVersion
|
targetSdkVersion flutter.targetSdkVersion
|
||||||
versionCode 95
|
versionCode 97
|
||||||
versionName "2.5.0"
|
versionName "2.5.2"
|
||||||
manifestPlaceholders = [
|
manifestPlaceholders = [
|
||||||
vivo_APPID: "105669716",
|
vivo_APPID: "105669716",
|
||||||
vivo_APPKEY:"84f750207787376b310ca5b0d5969122",
|
vivo_APPKEY:"84f750207787376b310ca5b0d5969122",
|
||||||
|
|||||||
26
circle_app/android/app/proguard-rules.pro
vendored
@ -34,4 +34,30 @@
|
|||||||
-keepclassmembers enum * {
|
-keepclassmembers enum * {
|
||||||
public static **[] values();
|
public static **[] values();
|
||||||
public static ** valueOf(java.lang.String);
|
public static ** valueOf(java.lang.String);
|
||||||
|
}
|
||||||
|
|
||||||
|
-dontwarn com.cmic.sso.sdk.**
|
||||||
|
-keep class com.cmic.sso.**{*;}
|
||||||
|
-dontwarn com.sdk.**
|
||||||
|
-keep class com.sdk.** { *;}
|
||||||
|
-keep class cn.com.chinatelecom.account.**{*;}
|
||||||
|
-keep public class * extends android.view.View
|
||||||
|
-keep class com.netease.nis.quicklogin.entity.**{*;}
|
||||||
|
-keep class com.netease.nis.quicklogin.listener.**{*;}
|
||||||
|
-keep class com.netease.nis.quicklogin.QuickLogin{
|
||||||
|
public <methods>;
|
||||||
|
public <fields>;
|
||||||
|
}
|
||||||
|
-keep class com.netease.nis.quicklogin.helper.UnifyUiConfig{*;}
|
||||||
|
-keep class com.netease.nis.quicklogin.helper.UnifyUiConfig$Builder{
|
||||||
|
public <methods>;
|
||||||
|
public <fields>;
|
||||||
|
}
|
||||||
|
-keep class com.netease.nis.quicklogin.utils.LoginUiHelper$CustomViewListener{
|
||||||
|
public <methods>;
|
||||||
|
public <fields>;
|
||||||
|
}
|
||||||
|
-keep class com.netease.nis.basesdk.**{
|
||||||
|
public *;
|
||||||
|
protected *;
|
||||||
}
|
}
|
||||||
BIN
circle_app/android/app/src/main/res/drawable/check.png
Normal file
|
After Width: | Height: | Size: 2.0 KiB |
BIN
circle_app/android/app/src/main/res/drawable/left_bt_bg.png
Normal file
|
After Width: | Height: | Size: 2.0 KiB |
BIN
circle_app/android/app/src/main/res/drawable/login_btn_bg.png
Normal file
|
After Width: | Height: | Size: 55 KiB |
BIN
circle_app/android/app/src/main/res/drawable/login_logo.png
Normal file
|
After Width: | Height: | Size: 25 KiB |
BIN
circle_app/android/app/src/main/res/drawable/right_bt_bg.png
Normal file
|
After Width: | Height: | Size: 8.3 KiB |
109
circle_app/data/android-light-config.json
Normal file
@ -0,0 +1,109 @@
|
|||||||
|
{
|
||||||
|
"statusBarColor": "#18181A",
|
||||||
|
"isStatusBarDarkColor": false,
|
||||||
|
"isHideBackIcon": true,
|
||||||
|
"navBackgroundColor": "#00000000",
|
||||||
|
"isHideNav": true,
|
||||||
|
"logoIconName": "login_logo",
|
||||||
|
"logoWidth": 90,
|
||||||
|
"logoHeight": 90,
|
||||||
|
"logoTopYOffset": 132,
|
||||||
|
"maskNumberColor": "#000000",
|
||||||
|
"maskNumberDpSize": 24,
|
||||||
|
"maskNumberTopYOffset": 300,
|
||||||
|
"maskNumberWidth": 222,
|
||||||
|
"maskNumberHeight": 24,
|
||||||
|
"sloganDpSize": 12,
|
||||||
|
"sloganColor": "#999999",
|
||||||
|
"sloganTopYOffset": 334,
|
||||||
|
"loginBtnText": "本机号码一键登录",
|
||||||
|
"loginBtnTextDpSize": 18,
|
||||||
|
"loginBtnTextColor": "#ffffff",
|
||||||
|
"loginBtnWidth": 311,
|
||||||
|
"loginBtnHeight": 48,
|
||||||
|
"loginBtnMarginLeft": 32,
|
||||||
|
"loginBtnMarginRight": 32,
|
||||||
|
"loginBtnBackgroundRes": "login_btn_bg",
|
||||||
|
"loginBtnTopYOffset": 398,
|
||||||
|
"privacyTextColor": "#000000",
|
||||||
|
"privacyProtocolColor": "#C178FF",
|
||||||
|
"privacyDpSize": 12,
|
||||||
|
"privacyBottomYOffset": 66,
|
||||||
|
"privacyMarginLeft": 44,
|
||||||
|
"privacyMarginRight": 44,
|
||||||
|
"privacyState": false,
|
||||||
|
"isPrivacyTextGravityCenter": true,
|
||||||
|
"checkBoxWith": 15,
|
||||||
|
"checkBoxHeight": 15,
|
||||||
|
"backgroundImage": "bg",
|
||||||
|
"checkedImageName": "check",
|
||||||
|
"unCheckedImageName": "uncheck",
|
||||||
|
"privacyTextStart": "我已阅读并同意",
|
||||||
|
"protocolText": "用户服务协议",
|
||||||
|
"protocol2Text": "隐私协议",
|
||||||
|
"privacyDialogWidth": 291,
|
||||||
|
"privacyDialogHeight": 240,
|
||||||
|
"privacyDialogTitleSize": 18,
|
||||||
|
"privacyDialogTitle": "用户协议和隐私政策",
|
||||||
|
"isPrivacyDialogTitleBold": true,
|
||||||
|
"privacyDialogSize": 14,
|
||||||
|
"privacyDialogTextColor": "#999999",
|
||||||
|
"privacyDialogTitleMarginTop": 25,
|
||||||
|
"privacyDialogContentStart": "我已阅读并同意",
|
||||||
|
"privacyDialogBtnTextSize": 16,
|
||||||
|
"privacyDialogBtnAgreeTextColor": "#ffffff",
|
||||||
|
"privacyDialogBtnDisagreeTextColor": "#999999",
|
||||||
|
"privacyDialogContentMarginLeft": 20,
|
||||||
|
"privacyDialogContentMarginRight": 20,
|
||||||
|
"privacyDialogBtnAgreeText": "同意",
|
||||||
|
"privacyDialogBtnDisagreeText": "不同意",
|
||||||
|
"privacyDialogBtnHeight": 40,
|
||||||
|
"privacyDialogBtnMarginBottom": 25,
|
||||||
|
"privacyDialogBtnMarginLeft": 16,
|
||||||
|
"privacyDialogBtnMarginRight": 16,
|
||||||
|
"privacyDialogBtnAgreeBg": "right_bt_bg",
|
||||||
|
"privacyDialogBtnDisagreeBg": "left_bt_bg",
|
||||||
|
"privacyDialogProtocolColor": "#B35AFF",
|
||||||
|
"privacyDialogContentEnd": ",并授权微乐园获得本机号码。未注册的手机号验证通过后将自动完成注册。",
|
||||||
|
"widgets": [
|
||||||
|
{
|
||||||
|
"viewId": "otherLogin",
|
||||||
|
"type": "TextView",
|
||||||
|
"top": 462,
|
||||||
|
"left": 126,
|
||||||
|
"right": 126,
|
||||||
|
"width": 120,
|
||||||
|
"height": 16,
|
||||||
|
"isGravityCenter": true,
|
||||||
|
"text": "其他方式登录",
|
||||||
|
"font": 14,
|
||||||
|
"textColor": "#333333",
|
||||||
|
"clickable": true,
|
||||||
|
"action": "otherLogin"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"viewId": "arrow",
|
||||||
|
"type": "ImageView",
|
||||||
|
"top": 464,
|
||||||
|
"left": 228,
|
||||||
|
"right": 134,
|
||||||
|
"width": 13,
|
||||||
|
"height": 13,
|
||||||
|
"clickable": true,
|
||||||
|
"backgroundImgPath": "right_click",
|
||||||
|
"action": "otherLogin"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"viewId": "wechat",
|
||||||
|
"type": "ImageView",
|
||||||
|
"top": 0,
|
||||||
|
"left": 263,
|
||||||
|
"right": 16,
|
||||||
|
"width": 95,
|
||||||
|
"height": 30,
|
||||||
|
"clickable": true,
|
||||||
|
"backgroundImgPath": "online",
|
||||||
|
"action": "onlineLogin"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
BIN
circle_app/data/img/mine/version_icon.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
201
circle_app/data/ios-light-config.json
Normal file
@ -0,0 +1,201 @@
|
|||||||
|
{
|
||||||
|
"presentDirectionType" : 2,
|
||||||
|
"toastWidth" : 300,
|
||||||
|
"toastHeight" : 250,
|
||||||
|
"toastBackgroundColor" : "#FFFFFF",
|
||||||
|
"toastCornerRadius" : 8,
|
||||||
|
"toastTitleText" : "服务协议及隐私",
|
||||||
|
"toastTitleTextColor" : "#000000",
|
||||||
|
"toastTitleFontSize" : 18,
|
||||||
|
"toastTitleFontWeight" : "bold",
|
||||||
|
"toastContentPrefixText" : "为了更好地保障您的合法权益,请您阅读并同意以下协议",
|
||||||
|
"toastContentSuffixText" : "",
|
||||||
|
"toastContentTextColor" : "#333333",
|
||||||
|
"toastContentFontSize" : 14,
|
||||||
|
"toastContentFontWeight" : "thin",
|
||||||
|
"toastContentLineSpacing" : 1,
|
||||||
|
"toastContentWordSpacing" : 1,
|
||||||
|
"toastCancelWidth" : 120,
|
||||||
|
"toastCancelHeight" : 40,
|
||||||
|
"toastCancelText" : "拒绝",
|
||||||
|
"toastCancelTextColor" : "#000000",
|
||||||
|
"toastCancelFontSize" : 15,
|
||||||
|
"toastCancelFontWeight" : "regular",
|
||||||
|
"toastCancelCornerRadius" : 20,
|
||||||
|
"toastCancelBackgroundColor" : "#FFFFFF",
|
||||||
|
"toastCancelBorderColor" : "#000000",
|
||||||
|
"toastConfirmWidth" : 120,
|
||||||
|
"toastConfirmHeight" : 40,
|
||||||
|
"toastConfirmText" : "同意",
|
||||||
|
"toastConfirmTextColor" : "#FFFFFF",
|
||||||
|
"toastConfirmFontSize" : 15,
|
||||||
|
"toastConfirmFontWeight" : "bold",
|
||||||
|
"toastConfirmCornerRadius" : 20,
|
||||||
|
"toastConfirmBackgroundColor" : "#3478F7",
|
||||||
|
"toastConfirmBorderColor" : "#3478F7",
|
||||||
|
"toastTitleToContentSpace" : 20,
|
||||||
|
"toastContentToButtonSpace" : 20,
|
||||||
|
"toastEdgeInsetsTop" : 20,
|
||||||
|
"toastEdgeInsetsBottom" : 20,
|
||||||
|
"toastEdgeInsetsLeft" : 20,
|
||||||
|
"toastEdgeInsetsRight" : 20,
|
||||||
|
"colors": ["#06F9FA", "#DC5BFD"],
|
||||||
|
"startPointX": "0.0",
|
||||||
|
"startPointY": "0.5",
|
||||||
|
"endPointX": "1.0",
|
||||||
|
"endPointY": "0.5",
|
||||||
|
"backgroundColor": "#FFFFFF",
|
||||||
|
"navBarHidden": false,
|
||||||
|
"navBgColor": "#3478F7",
|
||||||
|
"navText": "一键登录",
|
||||||
|
"navTextFont": 16,
|
||||||
|
"navTextColor": "#ffffff",
|
||||||
|
"navTextHidden": false,
|
||||||
|
"navReturnImg": "static/qq.png",
|
||||||
|
"navReturnImgLeftMargin": 0,
|
||||||
|
"navReturnImgBottomMargin": 0,
|
||||||
|
"navReturnImgWidth": 60,
|
||||||
|
"navReturnImgHeight": 60,
|
||||||
|
"logoIconName": "splash_icon.png",
|
||||||
|
"logoWidth": 50,
|
||||||
|
"logoHeight": 50,
|
||||||
|
"logoOffsetX": 0,
|
||||||
|
"logoHidden": false,
|
||||||
|
"logoOffsetTopY": 50,
|
||||||
|
"numberColor": "#000000",
|
||||||
|
"numberOffsetX": 0,
|
||||||
|
"numberHeight": 50,
|
||||||
|
"numberFontSize": 18,
|
||||||
|
"numberFontWeight": "bold",
|
||||||
|
"numberCornerRadius": 10,
|
||||||
|
"numberLeftContent": "",
|
||||||
|
"numberRightContent": "",
|
||||||
|
"numberOffsetTopY": "100",
|
||||||
|
"brandColor": "#000000",
|
||||||
|
"brandWidth": 100,
|
||||||
|
"brandHeight": 20,
|
||||||
|
"brandFontSize": 14,
|
||||||
|
"brandFontWeight": "regular",
|
||||||
|
"brandOffsetX": 0,
|
||||||
|
"brandHidden": false,
|
||||||
|
"brandLogoOffsetMargin": 0,
|
||||||
|
"brandLogoWidth": 50,
|
||||||
|
"brandLogoHeight": 50,
|
||||||
|
"brandOffsetTopY": 170,
|
||||||
|
"logBtnText": "确定登录",
|
||||||
|
"logBtnTextFontSize": 16,
|
||||||
|
"logBtnTextFontWeight": "bold",
|
||||||
|
"logBtnTextColor": "#ffffff",
|
||||||
|
"logBtnRadius": 20,
|
||||||
|
"logBtnHeight": 40,
|
||||||
|
"logBtnOriginLeft": 80,
|
||||||
|
"logBtnOriginRight": 80,
|
||||||
|
"logBtnUsableBGColor": "#0099FF",
|
||||||
|
"logBtnOffsetTopY": 230,
|
||||||
|
"logBtnEnableImg": "logo",
|
||||||
|
"logBtnHighlightedImg": "pic_success",
|
||||||
|
"checkedImageName": "static/checkedImageName.png",
|
||||||
|
"unCheckedImageName": "static/unCheckedImageName.png",
|
||||||
|
"checkboxWH": 50,
|
||||||
|
"privacyState": true,
|
||||||
|
"checkedHidden": false,
|
||||||
|
"checkBoxAlignment": 0,
|
||||||
|
"checkBoxMargin": 0,
|
||||||
|
"appPrivacyOriginLeft": 40,
|
||||||
|
"appPrivacyOriginRight": 40,
|
||||||
|
"appPrivacyText": "登录即同意《默认》并授权获得《用户政策》和《用户隐私协议》以及《用户行为准则》和《用户相关条令》",
|
||||||
|
"appFPrivacyText": "《用户政策》",
|
||||||
|
"appFPrivacyURL": "https://dun.163.com/?from=baiduP_PP_PP664&sdclkid=AL2N15fsbJDiALjpALAD",
|
||||||
|
"appSPrivacyText": "《用户隐私协议》",
|
||||||
|
"appSPrivacyURL": "https://dun.163.com/?from=baiduP_PP_PP664&sdclkid=AL2N15fsbJDiALjpALAD",
|
||||||
|
"appTPrivacyText": "《用户行为准则》",
|
||||||
|
"appTPrivacyURL": "https://dun.163.com/?from=baiduP_PP_PP664&sdclkid=AL2N15fsbJDiALjpALAD",
|
||||||
|
"appFourPrivacyText": "《用户相关条令》",
|
||||||
|
"appFourPrivacyURL": "https://dun.163.com/?from=baiduP_PP_PP664&sdclkid=AL2N15fsbJDiALjpALAD",
|
||||||
|
"appPrivacyAlignment": 0,
|
||||||
|
"appPrivacyOriginLeftMargin": 60,
|
||||||
|
"appPrivacyOriginBottomMargin": 60,
|
||||||
|
"shouldHiddenPrivacyMarks": 0,
|
||||||
|
"privacyNavReturnImg": "static/back.jpg",
|
||||||
|
"privacyFontSize": 12,
|
||||||
|
"privacyFontWeight": "thin",
|
||||||
|
"privacyColor": "#000000",
|
||||||
|
"protocolColor": "#3478F7",
|
||||||
|
|
||||||
|
"authWindowPop": 0,
|
||||||
|
"scaleW": 0.9,
|
||||||
|
"scaleH": 0.5,
|
||||||
|
"closePopImg": "back",
|
||||||
|
"closePopImgWidth": 20,
|
||||||
|
"closePopImgHeight": 20,
|
||||||
|
"closePopImgOriginY": -10,
|
||||||
|
"closePopImgOriginX": -10,
|
||||||
|
"authWindowCenterOriginY": 0,
|
||||||
|
"authWindowCenterOriginX": 0,
|
||||||
|
"popCenterCornerRadius": 16,
|
||||||
|
"popBottomCornerRadius": 10,
|
||||||
|
"popBackgroundColor": "#0099FF",
|
||||||
|
"alpha": 0.5,
|
||||||
|
"isOpenSwipeGesture": true,
|
||||||
|
|
||||||
|
"isRepeatPlay": "YES",
|
||||||
|
"localVideoFileName": "video_portrait.mp4",
|
||||||
|
"animationDuration": 2,
|
||||||
|
"animationRepeatCount": 1000,
|
||||||
|
|
||||||
|
"bgImage":"launchImage.png",
|
||||||
|
"launchImage":"kj_pic_bg",
|
||||||
|
"faceOrientation" : 0,
|
||||||
|
"modalTransitionStyle": 0,
|
||||||
|
"showPrivacyDialog": 0,
|
||||||
|
|
||||||
|
"statusBarStyle": 0,
|
||||||
|
"widgets": [
|
||||||
|
{
|
||||||
|
"type": "UIButton",
|
||||||
|
"UIButtonType": 0,
|
||||||
|
"image": "static/weixin.png",
|
||||||
|
"title": "",
|
||||||
|
"titleColor": "#000000",
|
||||||
|
"titleFont": 12,
|
||||||
|
"cornerRadius": 20,
|
||||||
|
"action": "handleCustomEvent1",
|
||||||
|
"frame": {"mainScreenLeftDistance":100,"mainScreenTopDistance":360,"width":32,"height":32},
|
||||||
|
"backgroundImage":""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "UIButton",
|
||||||
|
"UIButtonType": 0,
|
||||||
|
"image": "static/qq.png",
|
||||||
|
"title": "",
|
||||||
|
"titleColor": "#FFFFFF",
|
||||||
|
"titleFont": 12,
|
||||||
|
"cornerRadius": 20,
|
||||||
|
"action": "handleCustomEvent2",
|
||||||
|
"frame": {"mainScreenCenterXWithLeftDistance":0,"mainScreenTopDistance":360,"width":32,"height":32},
|
||||||
|
"backgroundImage": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "UIButton",
|
||||||
|
"UIButtonType": 0,
|
||||||
|
"image": "static/weibo.png",
|
||||||
|
"title": "",
|
||||||
|
"titleColor": "#FFFFFF",
|
||||||
|
"titleFont": 12,
|
||||||
|
"cornerRadius": 20,
|
||||||
|
"action": "handleCustomEvent3",
|
||||||
|
"frame": {"mainScreenRightDistance":100,"mainScreenTopDistance":360,"width":32,"height":32},
|
||||||
|
"backgroundImage": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "UILabel",
|
||||||
|
"textColor": "#000000",
|
||||||
|
"font": 15,
|
||||||
|
"action": "handleCustomLabel",
|
||||||
|
"text": "其他方式登录",
|
||||||
|
"backgroundColor":"#FFFFFF",
|
||||||
|
"textAlignment": 1,
|
||||||
|
"frame": {"mainScreenCenterXWithLeftDistance":0,"mainScreenTopDistance":310,"width":200,"height":32}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@ -103,6 +103,9 @@ PODS:
|
|||||||
- Mantle/extobjc (2.2.0)
|
- Mantle/extobjc (2.2.0)
|
||||||
- notification_permissions (0.4.4):
|
- notification_permissions (0.4.4):
|
||||||
- Flutter
|
- Flutter
|
||||||
|
- NTESBaseComponent (1.9)
|
||||||
|
- NTESQuickPass (3.6.4):
|
||||||
|
- NTESBaseComponent
|
||||||
- package_info_plus (0.4.5):
|
- package_info_plus (0.4.5):
|
||||||
- Flutter
|
- Flutter
|
||||||
- pasteboard (0.0.1):
|
- pasteboard (0.0.1):
|
||||||
@ -117,6 +120,9 @@ PODS:
|
|||||||
- FlutterMacOS
|
- FlutterMacOS
|
||||||
- plain_notification_token_for_us (0.0.1):
|
- plain_notification_token_for_us (0.0.1):
|
||||||
- Flutter
|
- Flutter
|
||||||
|
- quickpass_yidun_flutter (0.0.1):
|
||||||
|
- Flutter
|
||||||
|
- NTESQuickPass (= 3.6.4)
|
||||||
- Reachability (3.2)
|
- Reachability (3.2)
|
||||||
- ReactiveObjC (3.1.1)
|
- ReactiveObjC (3.1.1)
|
||||||
- SDWebImage (5.18.5):
|
- SDWebImage (5.18.5):
|
||||||
@ -206,6 +212,7 @@ DEPENDENCIES:
|
|||||||
- permission_handler_apple (from `.symlinks/plugins/permission_handler_apple/ios`)
|
- permission_handler_apple (from `.symlinks/plugins/permission_handler_apple/ios`)
|
||||||
- photo_manager (from `.symlinks/plugins/photo_manager/ios`)
|
- photo_manager (from `.symlinks/plugins/photo_manager/ios`)
|
||||||
- plain_notification_token_for_us (from `.symlinks/plugins/plain_notification_token_for_us/ios`)
|
- plain_notification_token_for_us (from `.symlinks/plugins/plain_notification_token_for_us/ios`)
|
||||||
|
- quickpass_yidun_flutter (from `.symlinks/plugins/quickpass_yidun_flutter/ios`)
|
||||||
- shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/ios`)
|
- shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/ios`)
|
||||||
- sqflite (from `.symlinks/plugins/sqflite/ios`)
|
- sqflite (from `.symlinks/plugins/sqflite/ios`)
|
||||||
- tencent_chat_push_for_china (from `.symlinks/plugins/tencent_chat_push_for_china/ios`)
|
- tencent_chat_push_for_china (from `.symlinks/plugins/tencent_chat_push_for_china/ios`)
|
||||||
@ -228,6 +235,8 @@ SPEC REPOS:
|
|||||||
- HydraAsync
|
- HydraAsync
|
||||||
- libwebp
|
- libwebp
|
||||||
- Mantle
|
- Mantle
|
||||||
|
- NTESBaseComponent
|
||||||
|
- NTESQuickPass
|
||||||
- Reachability
|
- Reachability
|
||||||
- ReactiveObjC
|
- ReactiveObjC
|
||||||
- SDWebImage
|
- SDWebImage
|
||||||
@ -298,6 +307,8 @@ EXTERNAL SOURCES:
|
|||||||
:path: ".symlinks/plugins/photo_manager/ios"
|
:path: ".symlinks/plugins/photo_manager/ios"
|
||||||
plain_notification_token_for_us:
|
plain_notification_token_for_us:
|
||||||
:path: ".symlinks/plugins/plain_notification_token_for_us/ios"
|
:path: ".symlinks/plugins/plain_notification_token_for_us/ios"
|
||||||
|
quickpass_yidun_flutter:
|
||||||
|
:path: ".symlinks/plugins/quickpass_yidun_flutter/ios"
|
||||||
shared_preferences_foundation:
|
shared_preferences_foundation:
|
||||||
:path: ".symlinks/plugins/shared_preferences_foundation/ios"
|
:path: ".symlinks/plugins/shared_preferences_foundation/ios"
|
||||||
sqflite:
|
sqflite:
|
||||||
@ -354,12 +365,15 @@ SPEC CHECKSUMS:
|
|||||||
local_notifications_for_us: d4bb63b93eb429c4697edd0ee66bbe8bade29633
|
local_notifications_for_us: d4bb63b93eb429c4697edd0ee66bbe8bade29633
|
||||||
Mantle: c5aa8794a29a022dfbbfc9799af95f477a69b62d
|
Mantle: c5aa8794a29a022dfbbfc9799af95f477a69b62d
|
||||||
notification_permissions: 825ea1bf2a52ab585c53fd7b5e8e96876d735d4b
|
notification_permissions: 825ea1bf2a52ab585c53fd7b5e8e96876d735d4b
|
||||||
|
NTESBaseComponent: 6d1fd6802c2340005d35db9daafe15ee6b9b976c
|
||||||
|
NTESQuickPass: 35dcb9c05c879c4c68cea40a8c0f3e2ea3c9c696
|
||||||
package_info_plus: 6c92f08e1f853dc01228d6f553146438dafcd14e
|
package_info_plus: 6c92f08e1f853dc01228d6f553146438dafcd14e
|
||||||
pasteboard: 982969ebaa7c78af3e6cc7761e8f5e77565d9ce0
|
pasteboard: 982969ebaa7c78af3e6cc7761e8f5e77565d9ce0
|
||||||
path_provider_foundation: 29f094ae23ebbca9d3d0cec13889cd9060c0e943
|
path_provider_foundation: 29f094ae23ebbca9d3d0cec13889cd9060c0e943
|
||||||
permission_handler_apple: e76247795d700c14ea09e3a2d8855d41ee80a2e6
|
permission_handler_apple: e76247795d700c14ea09e3a2d8855d41ee80a2e6
|
||||||
photo_manager: 4f6810b7dfc4feb03b461ac1a70dacf91fba7604
|
photo_manager: 4f6810b7dfc4feb03b461ac1a70dacf91fba7604
|
||||||
plain_notification_token_for_us: c804c7a9f79af55980cec08457cb8cdf73200db7
|
plain_notification_token_for_us: c804c7a9f79af55980cec08457cb8cdf73200db7
|
||||||
|
quickpass_yidun_flutter: ee1e837b4a253e422111cd7681162ab667eb8b30
|
||||||
Reachability: 33e18b67625424e47b6cde6d202dce689ad7af96
|
Reachability: 33e18b67625424e47b6cde6d202dce689ad7af96
|
||||||
ReactiveObjC: 011caa393aa0383245f2dcf9bf02e86b80b36040
|
ReactiveObjC: 011caa393aa0383245f2dcf9bf02e86b80b36040
|
||||||
SDWebImage: 7ac2b7ddc5e8484c79aa90fc4e30b149d6a2c88f
|
SDWebImage: 7ac2b7ddc5e8484c79aa90fc4e30b149d6a2c88f
|
||||||
|
|||||||
@ -139,6 +139,7 @@
|
|||||||
9705A1C41CF9048500538489 /* Embed Frameworks */,
|
9705A1C41CF9048500538489 /* Embed Frameworks */,
|
||||||
3B06AD1E1E4923F5004D2608 /* Thin Binary */,
|
3B06AD1E1E4923F5004D2608 /* Thin Binary */,
|
||||||
596550B3B6FD4574F751EEF4 /* [CP] Embed Pods Frameworks */,
|
596550B3B6FD4574F751EEF4 /* [CP] Embed Pods Frameworks */,
|
||||||
|
9BBB3F987D37397FD780C20F /* [CP] Copy Pods Resources */,
|
||||||
);
|
);
|
||||||
buildRules = (
|
buildRules = (
|
||||||
);
|
);
|
||||||
@ -244,6 +245,23 @@
|
|||||||
shellPath = /bin/sh;
|
shellPath = /bin/sh;
|
||||||
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
|
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
|
||||||
};
|
};
|
||||||
|
9BBB3F987D37397FD780C20F /* [CP] Copy Pods Resources */ = {
|
||||||
|
isa = PBXShellScriptBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
);
|
||||||
|
inputFileListPaths = (
|
||||||
|
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist",
|
||||||
|
);
|
||||||
|
name = "[CP] Copy Pods Resources";
|
||||||
|
outputFileListPaths = (
|
||||||
|
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist",
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
shellPath = /bin/sh;
|
||||||
|
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n";
|
||||||
|
showEnvVarsInLog = 0;
|
||||||
|
};
|
||||||
A37C0AA62211F95AD4A4D561 /* [CP] Check Pods Manifest.lock */ = {
|
A37C0AA62211F95AD4A4D561 /* [CP] Check Pods Manifest.lock */ = {
|
||||||
isa = PBXShellScriptBuildPhase;
|
isa = PBXShellScriptBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
|
|||||||
21
circle_app/ios/Runner/Assets.xcassets/check_image.imageset/Contents.json
vendored
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
"images" : [
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename" : "umcsdk_check_image.png",
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "3x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"author" : "xcode",
|
||||||
|
"version" : 1
|
||||||
|
}
|
||||||
|
}
|
||||||
BIN
circle_app/ios/Runner/Assets.xcassets/check_image.imageset/umcsdk_check_image.png
vendored
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
21
circle_app/ios/Runner/Assets.xcassets/checkedImageName.imageset/Contents.json
vendored
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
"images" : [
|
||||||
|
{
|
||||||
|
"filename" : "checkedImageName.png",
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "3x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"author" : "xcode",
|
||||||
|
"version" : 1
|
||||||
|
}
|
||||||
|
}
|
||||||
BIN
circle_app/ios/Runner/Assets.xcassets/checkedImageName.imageset/checkedImageName.png
vendored
Normal file
|
After Width: | Height: | Size: 2.1 KiB |
21
circle_app/ios/Runner/Assets.xcassets/login_btn_normal.imageset/Contents.json
vendored
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
"images" : [
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename" : "umcsdk_login_btn_normal.png",
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "3x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"author" : "xcode",
|
||||||
|
"version" : 1
|
||||||
|
}
|
||||||
|
}
|
||||||
BIN
circle_app/ios/Runner/Assets.xcassets/login_btn_normal.imageset/umcsdk_login_btn_normal.png
vendored
Normal file
|
After Width: | Height: | Size: 2.3 KiB |
21
circle_app/ios/Runner/Assets.xcassets/login_btn_press.imageset/Contents.json
vendored
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
"images" : [
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename" : "umcsdk_login_btn_press.png",
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "3x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"author" : "xcode",
|
||||||
|
"version" : 1
|
||||||
|
}
|
||||||
|
}
|
||||||
BIN
circle_app/ios/Runner/Assets.xcassets/login_btn_press.imageset/umcsdk_login_btn_press.png
vendored
Normal file
|
After Width: | Height: | Size: 2.3 KiB |
21
circle_app/ios/Runner/Assets.xcassets/login_btn_unable.imageset/Contents.json
vendored
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
"images" : [
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename" : "umcsdk_login_btn_unable.png",
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "3x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"author" : "xcode",
|
||||||
|
"version" : 1
|
||||||
|
}
|
||||||
|
}
|
||||||
BIN
circle_app/ios/Runner/Assets.xcassets/login_btn_unable.imageset/umcsdk_login_btn_unable.png
vendored
Normal file
|
After Width: | Height: | Size: 2.3 KiB |
21
circle_app/ios/Runner/Assets.xcassets/return_bg.imageset/Contents.json
vendored
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
"images" : [
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename" : "umcsdk_return_bg.png",
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "3x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"author" : "xcode",
|
||||||
|
"version" : 1
|
||||||
|
}
|
||||||
|
}
|
||||||
BIN
circle_app/ios/Runner/Assets.xcassets/return_bg.imageset/umcsdk_return_bg.png
vendored
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
21
circle_app/ios/Runner/Assets.xcassets/unCheckedImageName.imageset/Contents.json
vendored
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
"images" : [
|
||||||
|
{
|
||||||
|
"filename" : "unCheckedImageName.png",
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "3x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"author" : "xcode",
|
||||||
|
"version" : 1
|
||||||
|
}
|
||||||
|
}
|
||||||
BIN
circle_app/ios/Runner/Assets.xcassets/unCheckedImageName.imageset/unCheckedImageName.png
vendored
Normal file
|
After Width: | Height: | Size: 321 B |
21
circle_app/ios/Runner/Assets.xcassets/uncheck_image.imageset/Contents.json
vendored
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
"images" : [
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename" : "umcsdk_uncheck_image.png",
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "3x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"author" : "xcode",
|
||||||
|
"version" : 1
|
||||||
|
}
|
||||||
|
}
|
||||||
BIN
circle_app/ios/Runner/Assets.xcassets/uncheck_image.imageset/umcsdk_uncheck_image.png
vendored
Normal file
|
After Width: | Height: | Size: 1.0 KiB |
@ -183,6 +183,7 @@ final ScrollController nearScrollController = ScrollController();
|
|||||||
void loadNewUserRewardData() async {
|
void loadNewUserRewardData() async {
|
||||||
var data = await DioManager.instance.get(url: Api.newUserConfig);
|
var data = await DioManager.instance.get(url: Api.newUserConfig);
|
||||||
if (data['code'] == 200) {
|
if (data['code'] == 200) {
|
||||||
|
if (Get.currentRoute == Routes.Chat) return;
|
||||||
if (data['data']['isShow']) {
|
if (data['data']['isShow']) {
|
||||||
if (!data['data']['todayHasReceivedReward']) {
|
if (!data['data']['todayHasReceivedReward']) {
|
||||||
Get.bottomSheet(
|
Get.bottomSheet(
|
||||||
|
|||||||
@ -170,17 +170,18 @@ class _CustomDialogState extends State<UpdateDialog> {
|
|||||||
throw 'Could not open App Store.';
|
throw 'Could not open App Store.';
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
child:isShowWeb? Container(
|
child:Container(
|
||||||
margin: EdgeInsets.only(top: 10.sp),
|
margin: EdgeInsets.only(top: 0.sp),
|
||||||
child: Text(
|
child: Text(
|
||||||
"下载太慢?试试浏览器下载吧。",
|
"下载太慢或安装不成功?前往官网下载安装哈",
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
color: Colors.blue, // 设置蓝色颜色
|
color: Colors.blue, // 设置蓝色颜色
|
||||||
|
fontSize: 13.sp,
|
||||||
decoration:
|
decoration:
|
||||||
TextDecoration.underline, // 添加下划线
|
TextDecoration.underline, // 添加下划线
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
): Container(),
|
),
|
||||||
)
|
)
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
@ -205,10 +206,9 @@ class _CustomDialogState extends State<UpdateDialog> {
|
|||||||
if (appStoreUrl.contains("apk")) {
|
if (appStoreUrl.contains("apk")) {
|
||||||
updataApk(appStoreUrl);
|
updataApk(appStoreUrl);
|
||||||
setDownloadUi();
|
setDownloadUi();
|
||||||
Future.delayed(Duration(seconds: 10),() {
|
isShowWeb = true;
|
||||||
setState(() {
|
setState(() {
|
||||||
isShowWeb = true;
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
if (await canLaunch(appStoreUrl)) {
|
if (await canLaunch(appStoreUrl)) {
|
||||||
|
|||||||
@ -640,7 +640,7 @@ class HomeLogic extends GetxController with WidgetsBindingObserver {
|
|||||||
data['data']['account_id'].toString(), data['data']['user_sig']);
|
data['data']['account_id'].toString(), data['data']['user_sig']);
|
||||||
accountId = data['data']['account_id'].toString();
|
accountId = data['data']['account_id'].toString();
|
||||||
} else {
|
} else {
|
||||||
if (Get.currentRoute != Routes.Login || data['code'] >= 500) {
|
if (Get.currentRoute != Routes.Login && data['code'] >= 500) {
|
||||||
getIMData();
|
getIMData();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -812,6 +812,7 @@ class HomeLogic extends GetxController with WidgetsBindingObserver {
|
|||||||
Future.delayed(Duration(seconds: 30), () async {
|
Future.delayed(Duration(seconds: 30), () async {
|
||||||
SharedPreferencesHelper sp = await SharedPreferencesHelper.getInstance();
|
SharedPreferencesHelper sp = await SharedPreferencesHelper.getInstance();
|
||||||
if (await sp.isFirstAutoMatch()) {
|
if (await sp.isFirstAutoMatch()) {
|
||||||
|
if (Get.currentRoute == Routes.Chat) return;
|
||||||
var data = await DioManager.instance.get(
|
var data = await DioManager.instance.get(
|
||||||
url: Api.dayOnline,
|
url: Api.dayOnline,
|
||||||
);
|
);
|
||||||
|
|||||||
@ -81,6 +81,7 @@ class _HomePageState extends State<HomePage>
|
|||||||
});
|
});
|
||||||
|
|
||||||
vipNotifySub = EventBusManager.on<CallOutVipTipClass>().listen((event) {
|
vipNotifySub = EventBusManager.on<CallOutVipTipClass>().listen((event) {
|
||||||
|
if (Get.currentRoute == Routes.Chat) return;
|
||||||
showFloatingCallOutVipOverlay(event.info);
|
showFloatingCallOutVipOverlay(event.info);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@ -1,4 +1,6 @@
|
|||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
|
import 'dart:convert';
|
||||||
|
import 'dart:io';
|
||||||
import 'package:http/http.dart' as http;
|
import 'package:http/http.dart' as http;
|
||||||
import 'package:circle_app/circle_app/minefragment/logic.dart';
|
import 'package:circle_app/circle_app/minefragment/logic.dart';
|
||||||
import 'package:circle_app/net/dio_manager.dart';
|
import 'package:circle_app/net/dio_manager.dart';
|
||||||
@ -10,6 +12,7 @@ import 'package:flutter/services.dart';
|
|||||||
import 'package:flutter_native_splash/flutter_native_splash.dart';
|
import 'package:flutter_native_splash/flutter_native_splash.dart';
|
||||||
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
|
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
|
import 'package:quickpass_yidun_flutter/quickpass_flutter_plugin.dart';
|
||||||
import 'package:shared_preferences/shared_preferences.dart';
|
import 'package:shared_preferences/shared_preferences.dart';
|
||||||
|
|
||||||
import '../../../net/api.dart';
|
import '../../../net/api.dart';
|
||||||
@ -18,6 +21,8 @@ import 'state.dart';
|
|||||||
|
|
||||||
class LoginLogic extends GetxController {
|
class LoginLogic extends GetxController {
|
||||||
bool check = false;
|
bool check = false;
|
||||||
|
final QuickpassFlutterPlugin quickLoginPlugin = new QuickpassFlutterPlugin();
|
||||||
|
var eventChannel = const EventChannel("yd_quicklogin_flutter_event_channel");
|
||||||
|
|
||||||
// 0短信 1密码
|
// 0短信 1密码
|
||||||
int loginType = 0;
|
int loginType = 0;
|
||||||
@ -34,8 +39,6 @@ class LoginLogic extends GetxController {
|
|||||||
// TODO: implement onReady
|
// TODO: implement onReady
|
||||||
super.onReady();
|
super.onReady();
|
||||||
FlutterNativeSplash.remove();
|
FlutterNativeSplash.remove();
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@ -51,28 +54,26 @@ class LoginLogic extends GetxController {
|
|||||||
await sharedPreferences.getString(SharedPreferencesHelper.LOGINPHONE) ??
|
await sharedPreferences.getString(SharedPreferencesHelper.LOGINPHONE) ??
|
||||||
"";
|
"";
|
||||||
String pwd =
|
String pwd =
|
||||||
await sharedPreferences.getString(SharedPreferencesHelper.PWD) ??
|
await sharedPreferences.getString(SharedPreferencesHelper.PWD) ?? "";
|
||||||
"";
|
|
||||||
print(loginPhone);
|
print(loginPhone);
|
||||||
phoneEditingController.text = loginPhone;
|
phoneEditingController.text = loginPhone;
|
||||||
if (GetUtils.isPhoneNumber(loginPhone) && loginPhone.length == 11) {
|
if (GetUtils.isPhoneNumber(loginPhone) && loginPhone.length == 11) {
|
||||||
isPhone = true;
|
isPhone = true;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (phoneEditingController.text.isEmpty) {
|
if (phoneEditingController.text.isEmpty) {
|
||||||
readClipboardData();
|
readClipboardData();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sharedPreferences!.containsKey(SharedPreferencesHelper.firstLogin) && pwd.isNotEmpty) {
|
if (sharedPreferences!.containsKey(SharedPreferencesHelper.firstLogin) &&
|
||||||
|
pwd.isNotEmpty) {
|
||||||
loginType = 1;
|
loginType = 1;
|
||||||
pwdEditingController.text = pwd;
|
pwdEditingController.text = pwd;
|
||||||
}
|
}
|
||||||
|
isInitSuccess();
|
||||||
update();
|
update();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
final LoginState state = LoginState();
|
final LoginState state = LoginState();
|
||||||
TextEditingController phoneEditingController = TextEditingController();
|
TextEditingController phoneEditingController = TextEditingController();
|
||||||
TextEditingController codeEditingController = TextEditingController();
|
TextEditingController codeEditingController = TextEditingController();
|
||||||
@ -82,6 +83,8 @@ class LoginLogic extends GetxController {
|
|||||||
int seconds = 60;
|
int seconds = 60;
|
||||||
Timer? t;
|
Timer? t;
|
||||||
|
|
||||||
|
bool isWaitPre = false;
|
||||||
|
|
||||||
checkNetworkUrl() async {
|
checkNetworkUrl() async {
|
||||||
var data = await DioManager.instance.get(url: Api.bizdomain);
|
var data = await DioManager.instance.get(url: Api.bizdomain);
|
||||||
if (data['code'] == 200) {
|
if (data['code'] == 200) {
|
||||||
@ -91,7 +94,6 @@ class LoginLogic extends GetxController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Future<String> findFastestDomain(List domains) async {
|
Future<String> findFastestDomain(List domains) async {
|
||||||
final responseTimes = <String, int>{};
|
final responseTimes = <String, int>{};
|
||||||
|
|
||||||
@ -134,7 +136,6 @@ class LoginLogic extends GetxController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//倒计时
|
//倒计时
|
||||||
starDownTimer() {
|
starDownTimer() {
|
||||||
if (sendCodeBtn == false && seconds == 60) {
|
if (sendCodeBtn == false && seconds == 60) {
|
||||||
@ -158,6 +159,133 @@ class LoginLogic extends GetxController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// sdk 初始化是否完成
|
||||||
|
void isInitSuccess() async {
|
||||||
|
var result =
|
||||||
|
await quickLoginPlugin.init("55aaa02cbbfe4e0fa6be83e2b4df2d26", 4);
|
||||||
|
if (result?['success']) {
|
||||||
|
eventChannel.receiveBroadcastStream().listen(_onData,
|
||||||
|
onError: (response) {
|
||||||
|
print(response);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void _onData(response) {
|
||||||
|
if (response is Map) {
|
||||||
|
var action = (response as Map)["action"];
|
||||||
|
if (action == 'otherLogin' || action == 'handleCustomLabel') {
|
||||||
|
quickLoginPlugin.closeLoginAuthView();
|
||||||
|
} else if (action == 'authViewDidDisappear') {
|
||||||
|
isLogining = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// 预取号
|
||||||
|
void preLogin() async {
|
||||||
|
if (!check) {
|
||||||
|
showOKToast('请勾选同意用户协议和隐私协议');
|
||||||
|
FocusManager.instance.primaryFocus?.unfocus();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (isWaitPre) return;
|
||||||
|
isWaitPre = true;
|
||||||
|
Map<dynamic, dynamic>? map = await quickLoginPlugin.preFetchNumber();
|
||||||
|
isWaitPre = false;
|
||||||
|
String ydToken = '';
|
||||||
|
if (map?['success'] == true) {
|
||||||
|
ydToken = map?['token'];
|
||||||
|
quickLogin(ydToken);
|
||||||
|
} else {
|
||||||
|
if (map?['code'] == -1) {
|
||||||
|
isInitSuccess();
|
||||||
|
showOKToast('当前使用用户过多,请重试');
|
||||||
|
} else {
|
||||||
|
showOKToast('当前使用用户过多,请重试');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void quickLogin(String token) async {
|
||||||
|
var configMap;
|
||||||
|
String file = "";
|
||||||
|
if (Platform.isIOS) {
|
||||||
|
file = "data/ios-light-config.json";
|
||||||
|
} else if (Platform.isAndroid) {
|
||||||
|
file = "data/android-light-config.json";
|
||||||
|
}
|
||||||
|
if (isLogining) return;
|
||||||
|
isLogining = true;
|
||||||
|
var result = await rootBundle.loadString(file);
|
||||||
|
configMap = {"uiConfig": json.decode(result)};
|
||||||
|
quickLoginPlugin.setUiConfig(configMap);
|
||||||
|
Map<dynamic, dynamic>? map = await quickLoginPlugin.onePassLogin();
|
||||||
|
if (map?["success"]) {
|
||||||
|
var accessToken = map?["accessToken"];
|
||||||
|
quickLoginPlugin.closeLoginAuthView();
|
||||||
|
|
||||||
|
SmartDialog.showLoading(msg: '正在登录中...');
|
||||||
|
Map<String, dynamic> params = {
|
||||||
|
'operatorAccessToken': accessToken,
|
||||||
|
'ydToken': token
|
||||||
|
};
|
||||||
|
if (clipboardStr.isNotEmpty) {
|
||||||
|
params['inviteCode'] = clipboardStr;
|
||||||
|
}
|
||||||
|
var data =
|
||||||
|
await DioManager.instance.post(url: Api.quickLogin, params: params);
|
||||||
|
|
||||||
|
var bean = BaseResponse<LoginData>.fromJson(
|
||||||
|
data, (data) => LoginData.fromJson(data));
|
||||||
|
if (bean.code == 200) {
|
||||||
|
SharedPreferencesHelper.getInstance().then((sharedPreferences) {
|
||||||
|
sharedPreferences.setString(
|
||||||
|
SharedPreferencesHelper.LOGINPHONE, phoneEditingController.text);
|
||||||
|
sharedPreferences.setString(SharedPreferencesHelper.AUTHORIZATION,
|
||||||
|
bean.data!.Authorization.toString());
|
||||||
|
});
|
||||||
|
|
||||||
|
var data = await DioManager.instance.get(url: Api.getUserMine);
|
||||||
|
isLogining = false;
|
||||||
|
SmartDialog.dismiss();
|
||||||
|
if (data['code'] == 200) {
|
||||||
|
var bean = BaseResponse<MineResponseBean>.fromJson(
|
||||||
|
data, (data) => MineResponseBean.fromJson(data));
|
||||||
|
if (bean.isSuccess()) {
|
||||||
|
if (!bean.data.has_pwd) {
|
||||||
|
Get.toNamed(Routes.SetPasswordPage);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Get.offNamed(Routes.Home);
|
||||||
|
return;
|
||||||
|
} else if (bean.code == 30002) {
|
||||||
|
isLogining = false;
|
||||||
|
SmartDialog.dismiss();
|
||||||
|
SharedPreferencesHelper.getInstance().then((sharedPreferences) {
|
||||||
|
sharedPreferences.setString(
|
||||||
|
SharedPreferencesHelper.LOGINPHONE, phoneEditingController.text);
|
||||||
|
sharedPreferences.setString(SharedPreferencesHelper.AUTHORIZATION,
|
||||||
|
bean.data!.Authorization.toString());
|
||||||
|
});
|
||||||
|
|
||||||
|
Get.offNamed(Routes.Complete_materialPage);
|
||||||
|
return;
|
||||||
|
} else {
|
||||||
|
isLogining = false;
|
||||||
|
SmartDialog.dismiss();
|
||||||
|
showOKToast(bean.msg.toString());
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
isLogining = false;
|
||||||
|
SmartDialog.dismiss();
|
||||||
|
showOKToast(map?['msg'] ?? '');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Future<void> getCode() async {
|
Future<void> getCode() async {
|
||||||
SmartDialog.showLoading(msg: '正在发送中');
|
SmartDialog.showLoading(msg: '正在发送中');
|
||||||
var data = await DioManager.instance.post(
|
var data = await DioManager.instance.post(
|
||||||
@ -178,6 +306,7 @@ class LoginLogic extends GetxController {
|
|||||||
t?.cancel(); //清除
|
t?.cancel(); //清除
|
||||||
sendCodeBtn = false;
|
sendCodeBtn = false;
|
||||||
seconds = 60;
|
seconds = 60;
|
||||||
|
// showOKToast('若验证码未收到请打开数据网络使用[一键登录]');
|
||||||
}
|
}
|
||||||
update();
|
update();
|
||||||
});
|
});
|
||||||
@ -232,7 +361,8 @@ class LoginLogic extends GetxController {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
var data = await DioManager.instance.post(url: loginType == 0 ? Api.login : Api.new_login, params: params);
|
var data = await DioManager.instance
|
||||||
|
.post(url: loginType == 0 ? Api.login : Api.new_login, params: params);
|
||||||
isLogining = false;
|
isLogining = false;
|
||||||
SmartDialog.dismiss();
|
SmartDialog.dismiss();
|
||||||
var bean = BaseResponse<LoginData>.fromJson(
|
var bean = BaseResponse<LoginData>.fromJson(
|
||||||
@ -265,7 +395,7 @@ class LoginLogic extends GetxController {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
var data =
|
var data =
|
||||||
await DioManager.instance.put(url: Api.refreshToken, params: {});
|
await DioManager.instance.put(url: Api.refreshToken, params: {});
|
||||||
var bean = BaseResponse<LoginData>.fromJson(
|
var bean = BaseResponse<LoginData>.fromJson(
|
||||||
data, (data) => LoginData.fromJson(data));
|
data, (data) => LoginData.fromJson(data));
|
||||||
if (bean.code == 200) {
|
if (bean.code == 200) {
|
||||||
@ -286,7 +416,6 @@ class LoginLogic extends GetxController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Get.offNamed(Routes.Home);
|
Get.offNamed(Routes.Home);
|
||||||
return;
|
return;
|
||||||
} else if (bean.code == 30002) {
|
} else if (bean.code == 30002) {
|
||||||
@ -322,7 +451,7 @@ class LoginLogic extends GetxController {
|
|||||||
// Get.toNamed(AppRoutes.Complete_materialPage);
|
// Get.toNamed(AppRoutes.Complete_materialPage);
|
||||||
// return;
|
// return;
|
||||||
// }
|
// }
|
||||||
// showToast(msg);
|
// showOKToast(msg);
|
||||||
// } catch (e) {
|
// } catch (e) {
|
||||||
// if (e is DioException) {
|
// if (e is DioException) {
|
||||||
// print('DioException: ${e.message}');
|
// print('DioException: ${e.message}');
|
||||||
@ -335,7 +464,7 @@ class LoginLogic extends GetxController {
|
|||||||
|
|
||||||
// Get.toNamed(AppRoutes.Complete_materialPage);
|
// Get.toNamed(AppRoutes.Complete_materialPage);
|
||||||
// if (!GetUtils.isPhoneNumber(phoneEditingController.text)) {
|
// if (!GetUtils.isPhoneNumber(phoneEditingController.text)) {
|
||||||
// showToast('请输入正确的手机号');
|
// showOKToast('请输入正确的手机号');
|
||||||
// }
|
// }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -43,7 +43,7 @@ class LoginPage extends StatelessWidget {
|
|||||||
Positioned(
|
Positioned(
|
||||||
left: 0,
|
left: 0,
|
||||||
right: 0,
|
right: 0,
|
||||||
top: 180.sp,
|
top: 120.sp,
|
||||||
child: Image.asset(
|
child: Image.asset(
|
||||||
getBaseImage("ic_launcher"),
|
getBaseImage("ic_launcher"),
|
||||||
width: 120.sp,
|
width: 120.sp,
|
||||||
@ -53,11 +53,11 @@ class LoginPage extends StatelessWidget {
|
|||||||
width: Get.width,
|
width: Get.width,
|
||||||
height: Get.height,
|
height: Get.height,
|
||||||
child: Column(
|
child: Column(
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
// mainAxisAlignment: MainAxisAlignment.center,
|
||||||
children: [
|
children: [
|
||||||
Container(
|
Container(
|
||||||
// margin: EdgeInsets.only(
|
margin: EdgeInsets.only(
|
||||||
// top: MediaQuery.of(context).padding.top + 100.sp),
|
top:270.sp),
|
||||||
child: Stack(
|
child: Stack(
|
||||||
alignment: Alignment.center,
|
alignment: Alignment.center,
|
||||||
children: [
|
children: [
|
||||||
@ -355,32 +355,75 @@ class LoginPage extends StatelessWidget {
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
Positioned(
|
Positioned(
|
||||||
bottom: 182.sp,
|
top: 470.sp,
|
||||||
child: GestureDetector(
|
child: Column(
|
||||||
onTap: () {
|
children: [
|
||||||
logic.login();
|
Container(
|
||||||
},
|
width: 280.sp,
|
||||||
child: Container(
|
child: Row(
|
||||||
width: 200.sp,
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
height: 50.sp,
|
children: [
|
||||||
alignment: Alignment.center,
|
GestureDetector(
|
||||||
decoration: BoxDecoration(
|
onTap: () {
|
||||||
borderRadius: BorderRadius.circular(25.sp),
|
logic.login();
|
||||||
gradient: const LinearGradient(
|
},
|
||||||
begin: Alignment.centerLeft,
|
child: Container(
|
||||||
end: Alignment.centerRight,
|
width: 120.sp,
|
||||||
colors: [
|
height: 50.sp,
|
||||||
Color(0xff0AFCFF),
|
alignment: Alignment.center,
|
||||||
Color(0xffD739EA)
|
decoration: BoxDecoration(
|
||||||
])),
|
borderRadius: BorderRadius.circular(25.sp),
|
||||||
child: Text(
|
gradient: const LinearGradient(
|
||||||
'登录',
|
begin: Alignment.centerLeft,
|
||||||
style: TextStyle(
|
end: Alignment.centerRight,
|
||||||
color: Colors.white,
|
colors: [
|
||||||
fontSize: 16.sp,
|
Color(0xff0AFCFF),
|
||||||
fontWeight: FontWeight.w500),
|
Color(0xffD739EA)
|
||||||
|
])),
|
||||||
|
child: Text(
|
||||||
|
logic.loginType == 0 ? '验证码登录' : '密码登录',
|
||||||
|
style: TextStyle(
|
||||||
|
color: Colors.white,
|
||||||
|
fontSize: 16.sp,
|
||||||
|
fontWeight: FontWeight.w500),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
GestureDetector(
|
||||||
|
onTap: () {
|
||||||
|
logic.preLogin();
|
||||||
|
|
||||||
|
},
|
||||||
|
child: Container(
|
||||||
|
width: 120.sp,
|
||||||
|
height: 50.sp,
|
||||||
|
alignment: Alignment.center,
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
borderRadius: BorderRadius.circular(25.sp),
|
||||||
|
gradient: const LinearGradient(
|
||||||
|
begin: Alignment.centerLeft,
|
||||||
|
end: Alignment.centerRight,
|
||||||
|
colors: [
|
||||||
|
Color(0xff0AFCFF),
|
||||||
|
Color(0xffD739EA)
|
||||||
|
])),
|
||||||
|
child: Text(
|
||||||
|
'一键登录',
|
||||||
|
style: TextStyle(
|
||||||
|
color: Colors.white,
|
||||||
|
fontSize: 16.sp,
|
||||||
|
fontWeight: FontWeight.w500),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
),
|
),
|
||||||
),
|
Container(
|
||||||
|
margin: EdgeInsets.only(top: 15.sp),
|
||||||
|
child: Text('若验证码未收到请打开数据网络使用[一键登录]',style: TextStyle(color: Colors.white,fontSize: 14.sp),),
|
||||||
|
)
|
||||||
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
Positioned(
|
Positioned(
|
||||||
|
|||||||
@ -1,4 +1,5 @@
|
|||||||
|
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
|
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
|
||||||
import 'package:fluwx/fluwx.dart';
|
import 'package:fluwx/fluwx.dart';
|
||||||
@ -56,7 +57,7 @@ class MinefragmentLogic extends GetxController {
|
|||||||
|
|
||||||
bool has_pwd = false;
|
bool has_pwd = false;
|
||||||
bool isAuth = false;
|
bool isAuth = false;
|
||||||
|
bool isUpdate = false;
|
||||||
bool isUpdateVersion = false;
|
bool isUpdateVersion = false;
|
||||||
String enterHomeInfoMsg = "进入主页";
|
String enterHomeInfoMsg = "进入主页";
|
||||||
String joinedCircle = "";
|
String joinedCircle = "";
|
||||||
@ -80,6 +81,10 @@ class MinefragmentLogic extends GetxController {
|
|||||||
|
|
||||||
bool isShowserveTip = false;
|
bool isShowserveTip = false;
|
||||||
|
|
||||||
|
UpdateInfo? versionInfo;
|
||||||
|
|
||||||
|
var version = '';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void onReady() {
|
void onReady() {
|
||||||
// TODO: implement onReady
|
// TODO: implement onReady
|
||||||
@ -204,16 +209,6 @@ class MinefragmentLogic extends GetxController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> checkVersion() async {
|
|
||||||
var data = await DioManager.instance.get(url: Api.CHECK_VERSION);
|
|
||||||
var bean = BaseResponse<UpdateInfo>.fromJson(
|
|
||||||
data, (data) => UpdateInfo.fromJson(data));
|
|
||||||
if (bean.isSuccess()) {
|
|
||||||
isUpdateVersion = bean.data.update == 1;
|
|
||||||
update();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
getVisitorMsgData() async {
|
getVisitorMsgData() async {
|
||||||
var data =
|
var data =
|
||||||
await DioManager.instance.get(url: Api.getVisitorMsgs,);
|
await DioManager.instance.get(url: Api.getVisitorMsgs,);
|
||||||
@ -351,6 +346,35 @@ class MinefragmentLogic extends GetxController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Future<void> checkVersion() async {
|
||||||
|
var data = await DioManager.instance.get(url: Api.CHECK_VERSION);
|
||||||
|
var bean = BaseResponse<UpdateInfo>.fromJson(
|
||||||
|
data, (data) => UpdateInfo.fromJson(data));
|
||||||
|
if (bean.isSuccess() && bean.data.update == 1) {
|
||||||
|
if ( bean.data.update == 1) {
|
||||||
|
isUpdate = true;
|
||||||
|
version = bean.data.version;
|
||||||
|
versionInfo = bean.data;
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
// showReportDialog(Get.context!, bean.data.constraint == 0, bean.data!);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void showReportDialog(
|
||||||
|
BuildContext context, bool isDismiss, UpdateInfo updateInfo) {
|
||||||
|
showDialog(
|
||||||
|
context: context,
|
||||||
|
barrierDismissible: false,
|
||||||
|
builder: (BuildContext context) {
|
||||||
|
return UpdateDialog(
|
||||||
|
isDismiss: isDismiss,
|
||||||
|
updateInfo: updateInfo,
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
Future getImageFile() async {
|
Future getImageFile() async {
|
||||||
checkPhotosStatus();
|
checkPhotosStatus();
|
||||||
await fetchQnToken(Api.getqiniuToken);
|
await fetchQnToken(Api.getqiniuToken);
|
||||||
|
|||||||
@ -63,6 +63,7 @@ class _MineFuncItemState extends State<MineFuncItem> {
|
|||||||
_wxItemView(),
|
_wxItemView(),
|
||||||
_authtemView(),
|
_authtemView(),
|
||||||
_helpItemView(),
|
_helpItemView(),
|
||||||
|
_versionView(),
|
||||||
_setUpItemView()
|
_setUpItemView()
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
@ -81,7 +82,7 @@ class _MineFuncItemState extends State<MineFuncItem> {
|
|||||||
Get.toNamed(Routes.MyCirclePage, arguments: '');
|
Get.toNamed(Routes.MyCirclePage, arguments: '');
|
||||||
},
|
},
|
||||||
child: Container(
|
child: Container(
|
||||||
margin: EdgeInsets.only(top: 30.sp),
|
margin: EdgeInsets.only(top: 25.sp),
|
||||||
child: Row(
|
child: Row(
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
children: [
|
children: [
|
||||||
@ -126,7 +127,7 @@ class _MineFuncItemState extends State<MineFuncItem> {
|
|||||||
Get.toNamed(Routes.InvitePage);
|
Get.toNamed(Routes.InvitePage);
|
||||||
},
|
},
|
||||||
child: Container(
|
child: Container(
|
||||||
margin: EdgeInsets.only(top: 30.sp),
|
margin: EdgeInsets.only(top: 25.sp),
|
||||||
child: Row(
|
child: Row(
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
children: [
|
children: [
|
||||||
@ -209,7 +210,7 @@ class _MineFuncItemState extends State<MineFuncItem> {
|
|||||||
// }
|
// }
|
||||||
},
|
},
|
||||||
child: Container(
|
child: Container(
|
||||||
margin: EdgeInsets.only(top: 30.sp),
|
margin: EdgeInsets.only(top: 25.sp),
|
||||||
child: Row(
|
child: Row(
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
children: [
|
children: [
|
||||||
@ -291,7 +292,7 @@ class _MineFuncItemState extends State<MineFuncItem> {
|
|||||||
// controller.state.hearUrl
|
// controller.state.hearUrl
|
||||||
},
|
},
|
||||||
child: Container(
|
child: Container(
|
||||||
margin: EdgeInsets.only(top: 30.sp),
|
margin: EdgeInsets.only(top: 25.sp),
|
||||||
child: Row(
|
child: Row(
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
children: [
|
children: [
|
||||||
@ -363,7 +364,7 @@ class _MineFuncItemState extends State<MineFuncItem> {
|
|||||||
Get.toNamed(Routes.Real_people_auth);
|
Get.toNamed(Routes.Real_people_auth);
|
||||||
},
|
},
|
||||||
child: Container(
|
child: Container(
|
||||||
margin: EdgeInsets.only(top: 30.sp),
|
margin: EdgeInsets.only(top: 25.sp),
|
||||||
child: Row(
|
child: Row(
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
children: [
|
children: [
|
||||||
@ -428,14 +429,121 @@ class _MineFuncItemState extends State<MineFuncItem> {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Widget _versionView() {
|
||||||
|
return GestureDetector(
|
||||||
|
behavior: HitTestBehavior.opaque,
|
||||||
|
onTap: () {
|
||||||
|
if (logic.isUpdate) {
|
||||||
|
logic.showReportDialog(context, logic.versionInfo!.constraint == 0 , logic.versionInfo!);
|
||||||
|
} else {
|
||||||
|
showOKToast('当前已经是最新版本');
|
||||||
|
}
|
||||||
|
},
|
||||||
|
child: Container(
|
||||||
|
margin: EdgeInsets.only(top: 25.sp),
|
||||||
|
child: Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
|
children: [
|
||||||
|
ClipOval(
|
||||||
|
child: Image(
|
||||||
|
image: AssetImage(getMineImage("version_icon")),
|
||||||
|
width: 38.sp,
|
||||||
|
height:38.sp,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Container(
|
||||||
|
margin: EdgeInsets.only(left: 4.sp),
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
Row(
|
||||||
|
children: [
|
||||||
|
Text(
|
||||||
|
'更新版本',
|
||||||
|
style: TextStyle(color: Colors.white,fontSize: 14.sp),
|
||||||
|
),
|
||||||
|
logic.isUpdate
|
||||||
|
? Row(
|
||||||
|
children: [
|
||||||
|
Container(
|
||||||
|
width: 6.sp,
|
||||||
|
height: 5.sp,
|
||||||
|
margin:
|
||||||
|
EdgeInsets.only(left: 4.sp, right: 4.sp),
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
color: Colors.red,
|
||||||
|
borderRadius: BorderRadius.circular(3.sp),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Text(
|
||||||
|
logic.version ?? '',
|
||||||
|
style: TextStyle(
|
||||||
|
color: const Color(0xFFB7BECC),
|
||||||
|
fontSize: 12.sp,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
SizedBox(width: 8.sp),
|
||||||
|
],
|
||||||
|
)
|
||||||
|
: Container(),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
SizedBox(width: 4.sp),
|
||||||
|
Text(
|
||||||
|
logic.isUpdate ? '又有一些惊喜等你体验' : "更多惊喜体验在路上",
|
||||||
|
style: TextStyle(color: Colors.white60,fontSize: 12.sp),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Spacer(),
|
||||||
|
Image(
|
||||||
|
image: AssetImage(getHomeImage("icon_in")),
|
||||||
|
width: 24.sp,
|
||||||
|
height: 24.sp,
|
||||||
|
)
|
||||||
|
// Row(
|
||||||
|
// children: [
|
||||||
|
// Image(
|
||||||
|
// image: AssetImage(getMineImage("wallet")),
|
||||||
|
// width: 24.sp,
|
||||||
|
// height: 24.sp,
|
||||||
|
// ),
|
||||||
|
// SizedBox(width: 10.sp),
|
||||||
|
// const Text(
|
||||||
|
// "关注官方公众号",
|
||||||
|
// style: TextStyle(color: Colors.white),
|
||||||
|
// ),
|
||||||
|
// ],
|
||||||
|
// ),
|
||||||
|
// Row(
|
||||||
|
// children: [
|
||||||
|
// Text(
|
||||||
|
// '获取最新资讯及福利',
|
||||||
|
// style: const TextStyle(color: Colors.white60),
|
||||||
|
// ),
|
||||||
|
// Image(
|
||||||
|
// image: AssetImage(getHomeImage("icon_in")),
|
||||||
|
// width: 24.sp,
|
||||||
|
// height: 24.sp,
|
||||||
|
// ),
|
||||||
|
// ],
|
||||||
|
// )
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
Widget _wxItemView() {
|
Widget _wxItemView() {
|
||||||
return GestureDetector(
|
return GestureDetector(
|
||||||
behavior: HitTestBehavior.opaque,
|
behavior: HitTestBehavior.opaque,
|
||||||
onTap: () {
|
onTap: () {
|
||||||
|
// Get.toNamed(Routes.SetPasswordPage);
|
||||||
openWeChatToSearch();
|
openWeChatToSearch();
|
||||||
},
|
},
|
||||||
child: Container(
|
child: Container(
|
||||||
margin: EdgeInsets.only(top: 30.sp),
|
margin: EdgeInsets.only(top: 25.sp),
|
||||||
child: Row(
|
child: Row(
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
children: [
|
children: [
|
||||||
@ -509,7 +617,7 @@ class _MineFuncItemState extends State<MineFuncItem> {
|
|||||||
// controller.state.hearUrl
|
// controller.state.hearUrl
|
||||||
},
|
},
|
||||||
child: Container(
|
child: Container(
|
||||||
margin: EdgeInsets.only(top: 30.sp),
|
margin: EdgeInsets.only(top: 25.sp),
|
||||||
child: Row(
|
child: Row(
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
children: [
|
children: [
|
||||||
@ -583,7 +691,7 @@ class _MineFuncItemState extends State<MineFuncItem> {
|
|||||||
},
|
},
|
||||||
child: Container(
|
child: Container(
|
||||||
// color: Colors.red,
|
// color: Colors.red,
|
||||||
margin: EdgeInsets.only(top: 30.sp),
|
margin: EdgeInsets.only(top: 25.sp),
|
||||||
child: Row(
|
child: Row(
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
children: [
|
children: [
|
||||||
|
|||||||
@ -1916,7 +1916,7 @@ class _MinefragmentPageState extends State<MinefragmentPage>
|
|||||||
),
|
),
|
||||||
Row(
|
Row(
|
||||||
children: [
|
children: [
|
||||||
mineLogic.isUpdateVersion
|
mineLogic.isUpdate
|
||||||
? Container(
|
? Container(
|
||||||
width: 10.sp,
|
width: 10.sp,
|
||||||
height: 10.sp,
|
height: 10.sp,
|
||||||
@ -1925,7 +1925,7 @@ class _MinefragmentPageState extends State<MinefragmentPage>
|
|||||||
color: Colors.red, shape: BoxShape.circle),
|
color: Colors.red, shape: BoxShape.circle),
|
||||||
)
|
)
|
||||||
: Container(),
|
: Container(),
|
||||||
if (mineLogic.isUpdateVersion)
|
if (mineLogic.isUpdate)
|
||||||
Text(
|
Text(
|
||||||
'有新版本啦',
|
'有新版本啦',
|
||||||
style: TextStyle(color: Colors.white60),
|
style: TextStyle(color: Colors.white60),
|
||||||
|
|||||||
@ -76,12 +76,12 @@ class SetpasswordPage extends StatelessWidget {
|
|||||||
),
|
),
|
||||||
|
|
||||||
Container(
|
Container(
|
||||||
margin: EdgeInsets.symmetric(horizontal: 73.sp),
|
// margin: EdgeInsets.symmetric(horizontal: 73.sp),
|
||||||
child: Text(
|
child: Text(
|
||||||
'可输入字母或数字做密码',
|
'可输入字母或数字做密码,设置密码之后更方便登录哦~',
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
color: const Color(0xFFB7BECC),
|
color: const Color(0xFFB7BECC),
|
||||||
fontSize: 14.sp,
|
fontSize: 12.sp,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|||||||
@ -65,6 +65,7 @@ class UserinfoLogic extends GetxController {
|
|||||||
|
|
||||||
Map toUser = {};
|
Map toUser = {};
|
||||||
|
|
||||||
|
|
||||||
int pageType = 0;
|
int pageType = 0;
|
||||||
|
|
||||||
int pageIndex = 0;
|
int pageIndex = 0;
|
||||||
|
|||||||
@ -800,6 +800,18 @@ class MyTabbedScreenState extends State<UserinfoPage>
|
|||||||
getMineImage('gift_shop'),
|
getMineImage('gift_shop'),
|
||||||
width: 65.sp,
|
width: 65.sp,
|
||||||
),
|
),
|
||||||
|
if (logic.giftList.length -
|
||||||
|
logic.recevigiftList.length >
|
||||||
|
0)
|
||||||
|
Container(
|
||||||
|
margin: EdgeInsets.only(left: 4.sp, top: 5.sp),
|
||||||
|
|
||||||
|
child: Text(
|
||||||
|
'👉${logic.giftList.length - logic.recevigiftList.length}个未点亮',
|
||||||
|
style: TextStyle(
|
||||||
|
color: AppColor.mainColor, fontSize: 14.sp),
|
||||||
|
),
|
||||||
|
),
|
||||||
Expanded(child: Container()),
|
Expanded(child: Container()),
|
||||||
Text(
|
Text(
|
||||||
logic.toUser.isNotEmpty ? '贡献之星' : '贡献之星还在路上',
|
logic.toUser.isNotEmpty ? '贡献之星' : '贡献之星还在路上',
|
||||||
|
|||||||
@ -711,5 +711,8 @@ class Api {
|
|||||||
//emoji配置
|
//emoji配置
|
||||||
static var emojiConfig = '/up-service/callout/interact/emoji/configs';
|
static var emojiConfig = '/up-service/callout/interact/emoji/configs';
|
||||||
|
|
||||||
|
//快速登录
|
||||||
|
static var quickLogin = '/user-service/login/quick';
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -27,6 +27,7 @@ typedef void NoticeCallback();
|
|||||||
|
|
||||||
void showFloatingButtonOverlay(BuildContext context, String nickname,
|
void showFloatingButtonOverlay(BuildContext context, String nickname,
|
||||||
String ageMsg, String avatar, int event, NoticeCallback noticeCallback) {
|
String ageMsg, String avatar, int event, NoticeCallback noticeCallback) {
|
||||||
|
if (Get.currentRoute == Routes.Chat) return;
|
||||||
OverlayState? overlayState = Overlay.of(context);
|
OverlayState? overlayState = Overlay.of(context);
|
||||||
late OverlayEntry overlayEntry;
|
late OverlayEntry overlayEntry;
|
||||||
bool showMessage = false;
|
bool showMessage = false;
|
||||||
|
|||||||
@ -1493,6 +1493,14 @@ packages:
|
|||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.flutter-io.cn"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "4.1.0"
|
version: "4.1.0"
|
||||||
|
quickpass_yidun_flutter:
|
||||||
|
dependency: "direct main"
|
||||||
|
description:
|
||||||
|
name: quickpass_yidun_flutter
|
||||||
|
sha256: f04f7bb1dd82d116e6e837c7c9d501af11cc4ce116998b4f739a50a5d718b108
|
||||||
|
url: "https://pub.flutter-io.cn"
|
||||||
|
source: hosted
|
||||||
|
version: "1.5.6"
|
||||||
quiver:
|
quiver:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|||||||
@ -127,6 +127,8 @@ dependencies:
|
|||||||
carousel_slider: ^4.0.0
|
carousel_slider: ^4.0.0
|
||||||
#友盟
|
#友盟
|
||||||
umeng_common_sdk: ^1.2.7
|
umeng_common_sdk: ^1.2.7
|
||||||
|
#易盾一键认证
|
||||||
|
quickpass_yidun_flutter: ^1.4.3
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
flutter_test:
|
flutter_test:
|
||||||
@ -161,4 +163,6 @@ flutter:
|
|||||||
- data/img/mine/
|
- data/img/mine/
|
||||||
- data/img/msg/
|
- data/img/msg/
|
||||||
- data/img/circle/
|
- data/img/circle/
|
||||||
- data/china.json
|
- data/china.json
|
||||||
|
- data/android-light-config.json
|
||||||
|
- data/ios-light-config.json
|
||||||