From aacd7a0db36249734aab591f4523c0ea55420cbb Mon Sep 17 00:00:00 2001 From: CYH <13923927013@163.com> Date: Mon, 14 Jul 2025 14:09:36 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- circle_app/android/app/build.gradle | 4 +- .../ios/Runner.xcodeproj/project.pbxproj | 6 +- circle_app/lib/circle_app/call_out/logic.dart | 83 ++++++++--------- .../lib/circle_app/login/login/logic.dart | 20 +++- .../lib/circle_app/login/login/view.dart | 92 ++++++++++--------- .../tim_uikit_conversation.dart | 1 - circle_app/lib/circle_app/splash/logic.dart | 8 +- .../lib/commons/widgets/unlock_wx_tip.dart | 2 +- circle_app/lib/main.dart | 42 +-------- circle_app/pubspec.lock | 12 +-- circle_app/pubspec.yaml | 4 +- 11 files changed, 126 insertions(+), 148 deletions(-) diff --git a/circle_app/android/app/build.gradle b/circle_app/android/app/build.gradle index 385aa9f..90926ae 100644 --- a/circle_app/android/app/build.gradle +++ b/circle_app/android/app/build.gradle @@ -71,8 +71,8 @@ android { // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration. minSdkVersion 21 targetSdkVersion flutter.targetSdkVersion - versionCode 117 - versionName "2.6.7" + versionCode 121 + versionName "2.7.1" manifestPlaceholders = [ vivo_APPID: "105669716", vivo_APPKEY:"84f750207787376b310ca5b0d5969122", diff --git a/circle_app/ios/Runner.xcodeproj/project.pbxproj b/circle_app/ios/Runner.xcodeproj/project.pbxproj index b4a9e04..1e5dc10 100644 --- a/circle_app/ios/Runner.xcodeproj/project.pbxproj +++ b/circle_app/ios/Runner.xcodeproj/project.pbxproj @@ -400,7 +400,7 @@ "@executable_path/Frameworks", ); MARKETING_VERSION = 2.1.1; - PRODUCT_BUNDLE_IDENTIFIER = com.example.kyApp; + PRODUCT_BUNDLE_IDENTIFIER = com.zncdts.app123; PRODUCT_NAME = "$(TARGET_NAME)"; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; SUPPORTS_MACCATALYST = NO; @@ -551,7 +551,7 @@ "@executable_path/Frameworks", ); MARKETING_VERSION = 2.1.1; - PRODUCT_BUNDLE_IDENTIFIER = com.example.kyApp; + PRODUCT_BUNDLE_IDENTIFIER = com.zncdts.app123; PRODUCT_NAME = "$(TARGET_NAME)"; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; SUPPORTS_MACCATALYST = NO; @@ -596,7 +596,7 @@ "@executable_path/Frameworks", ); MARKETING_VERSION = 2.1.1; - PRODUCT_BUNDLE_IDENTIFIER = com.example.kyApp; + PRODUCT_BUNDLE_IDENTIFIER = com.zncdts.app123; PRODUCT_NAME = "$(TARGET_NAME)"; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; SUPPORTS_MACCATALYST = NO; diff --git a/circle_app/lib/circle_app/call_out/logic.dart b/circle_app/lib/circle_app/call_out/logic.dart index 476f3b8..c91b23c 100644 --- a/circle_app/lib/circle_app/call_out/logic.dart +++ b/circle_app/lib/circle_app/call_out/logic.dart @@ -73,8 +73,7 @@ class Call_outLogic extends GetxController { super.onInit(); loadPushInterestData(); - var data = - await DioManager.instance.get(url: Api.getConfig, params: {}); + var data = await DioManager.instance.get(url: Api.getConfig, params: {}); var bean = BaseResponse.fromJson( data, (data) => ConfigBean.fromJson(data)); if (bean.isSuccess()) { @@ -93,14 +92,12 @@ class Call_outLogic extends GetxController { url: "/up-service/interest/${numbers.first.id}", ); - if (result['code'] == 200) { - isLocal = result['data']['isLocal']; - localNumberList.addAll(myConfigData); + isLocal = result['data']['isLocal']; + localNumberList.addAll(myConfigData); } - - if(numbers.length>0 && !isLocal) { + if (numbers.length > 0 && !isLocal) { circleName = numbers[0].name; } update(); @@ -125,18 +122,15 @@ class Call_outLogic extends GetxController { // // update(); // } - - } HomeLogic logic = Get.find(); + if ((logic.model!.vip ?? 0) == 2) { + isCheck = true; + vip = logic.model!.vip; + } - if ((logic.model!.vip ?? 0) == 2) { - isCheck = true; - } - update(); - - + update(); loadQiniuToken(); @@ -147,8 +141,7 @@ class Call_outLogic extends GetxController { } loadPushInterestData() async { - var result = - await DioManager.instance.get(url: Api.getPushInterest); + var result = await DioManager.instance.get(url: Api.getPushInterest); if (result['code'] == 200) { interests = List.from( result['data'].map((x) => Interest.fromJson(x)), @@ -169,7 +162,7 @@ class Call_outLogic extends GetxController { Get.bottomSheet( Scaffold( backgroundColor: Colors.transparent, - body: Open_vip_tipPage(true,'super_callout'), + body: Open_vip_tipPage(true, 'super_callout'), ), isScrollControlled: true, enableDrag: false); @@ -216,7 +209,8 @@ class Call_outLogic extends GetxController { List atList = []; if (selectedList.isNotEmpty) { selectedList.forEach((element) { - atList.add({'userId': element.id.toString(), 'nickName': element.nickname}); + atList.add( + {'userId': element.id.toString(), 'nickName': element.nickname}); }); } @@ -224,14 +218,16 @@ class Call_outLogic extends GetxController { SmartDialog.showLoading(msg: '发布中..'); var params = { 'album': myBean, - 'content': textEditingController.text.trim(), - 'interest_id': numbers[0].id, - 'use_queen': isCheck ? 1 : 0, - 'localInterestId': isLocal ? localNumberList.first.id : '', - 'at':atList.isNotEmpty ? json.encode(atList) : '' + 'content': textEditingController.text.trim(), + 'interest_id': numbers[0].id, + 'use_queen': isCheck ? 1 : 0, + 'localInterestId': isLocal ? localNumberList.first.id : '', + 'at': atList.isNotEmpty ? json.encode(atList) : '' }; - var data = await DioManager.instance.post(url:Get.arguments is String ? Api.worldPush : Api.SendShout, params: params); + var data = await DioManager.instance.post( + url: Get.arguments is String ? Api.worldPush : Api.SendShout, + params: params); SmartDialog.dismiss(); var beandata = BaseResponse.fromJson( data, @@ -253,13 +249,13 @@ class Call_outLogic extends GetxController { dismissAllToast(); var result1 = await DioManager.instance.get(url: Api.hasFreeTimes); if (!result1['data']) { - resetShowToast(); - showOKToast(result1['msg']); + resetShowToast(); + showOKToast(result1['msg']); } showRechargeScreenDialog('call_out'); } else if (beandata.code == 30503) { List words = beandata.data; - upFilterWordsData(textEditingController.text,words,3); + upFilterWordsData(textEditingController.text, words, 3); showOKToast(beandata.msg); var callOutBean = BaseResponse>.fromJson( data, @@ -276,7 +272,7 @@ class Call_outLogic extends GetxController { data, (jsonData) => CirclePaymentBean.fromJson(jsonData), ); - // showDialog(); + // showDialog(); print(numbers[0].id); // showJoinCiclePiker(numbers[0].id.toString(),callOutBean.data.amount.toString(),callOutBean.data.oldAmount.toString(),0,(payResult){ @@ -289,17 +285,23 @@ class Call_outLogic extends GetxController { // // widget.bean.is_limit = false; // }); - UnlockCallDialog().showUnlockBottomSheet(numbers[0].id,callOutBean.data.amount.toString(),callOutBean.data.oldAmount.toString(),iositem: callOutBean.data.ios_item); + UnlockCallDialog().showUnlockBottomSheet( + numbers[0].id, + callOutBean.data.amount.toString(), + callOutBean.data.oldAmount.toString(), + iositem: callOutBean.data.ios_item); // tipWdiget() - } else if (beandata.code == 4005) { - Get.bottomSheet(BanDialog(time:data['data'],),isScrollControlled:true); + } else if (beandata.code == 4005) { + Get.bottomSheet( + BanDialog( + time: data['data'], + ), + isScrollControlled: true); } else { showOKToast(beandata.msg); } } - - startSelectCircleActivity() async { var data = await Get.toNamed(Routes.SelectCirclePage, arguments: { "interestMap": configBean.calloutInterests, @@ -326,7 +328,9 @@ class Call_outLogic extends GetxController { showOKToast("最多上传6张图片哦~"); return; } - final XFile? pickedFile = await _picker.pickImage(source: ImageSource.gallery,); + final XFile? pickedFile = await _picker.pickImage( + source: ImageSource.gallery, + ); if (null == pickedFile) { return; } @@ -385,7 +389,7 @@ class Call_outLogic extends GetxController { return; } - checkPhotosStatus(); + checkPhotosStatus(); try { final XFile? pickedFile = await _picker.pickVideo( source: ImageSource.gallery, @@ -411,9 +415,8 @@ class Call_outLogic extends GetxController { } }); - uploadQiniuVideo( - File(pickedFile.path), pickedFile.name, ImgPath.CALL_OUT_VIDEO, quToken, - (result) { + uploadQiniuVideo(File(pickedFile.path), pickedFile.name, + ImgPath.CALL_OUT_VIDEO, quToken, (result) { SmartDialog.dismiss(); state.videolist.add(result); update(); @@ -423,9 +426,7 @@ class Call_outLogic extends GetxController { showOKToast("请上传5-30秒的视频,当前视频长度为:$durationInSeconds" "秒"); } } catch (e) {} - } - } class MyBean { diff --git a/circle_app/lib/circle_app/login/login/logic.dart b/circle_app/lib/circle_app/login/login/logic.dart index 982d478..43fbe55 100644 --- a/circle_app/lib/circle_app/login/login/logic.dart +++ b/circle_app/lib/circle_app/login/login/logic.dart @@ -1,6 +1,7 @@ import 'dart:async'; import 'dart:convert'; import 'dart:io'; +import 'package:connectivity/connectivity.dart'; import 'package:flutter_bugly/flutter_bugly.dart'; import 'package:http/http.dart' as http; import 'package:circle_app/circle_app/minefragment/logic.dart'; @@ -39,6 +40,9 @@ class LoginLogic extends GetxController { bool showOthner = false; String isAuto = ''; + StreamSubscription? sub; + + bool isChange = false; @override void onReady() { @@ -79,8 +83,14 @@ class LoginLogic extends GetxController { } isAuto = sharedPreferences!.getString(SharedPreferencesHelper.firstLogin) ?? ''; if (isAuto.isEmpty && phoneEditingController.text.isEmpty) { - isInitSuccess(isAuto:true); - sharedPreferences.setString(SharedPreferencesHelper.firstLogin, '1'); + sub = Connectivity().onConnectivityChanged.listen((event) { + if (event != ConnectivityResult.none) { + if (isChange) return; + isChange = true; + isInitSuccess(isAuto:true); + sharedPreferences.setString(SharedPreferencesHelper.firstLogin, '1'); + } + }); } else { isInitSuccess(isAuto:false); loginType = 1; @@ -178,7 +188,7 @@ class LoginLogic extends GetxController { /// sdk 初始化是否完成 void isInitSuccess({bool isAuto = false}) async { //正式 55aaa02cbbfe4e0fa6be83e2b4df2d26 - //测试 24c0af46d1324ef78455e8b6c3a90281 + //测试 24c0af46d1324ef78455e8b6c3a90281 zncdts.app123 var result = await quickLoginPlugin.init("55aaa02cbbfe4e0fa6be83e2b4df2d26", 4); @@ -243,7 +253,8 @@ class LoginLogic extends GetxController { message: '${map?['code']}- ${ydToken}', detail: 'login', ); - if (map?['code'] == -1) { + // "resultCode" -> 401 + if (map?['code'] == -1 || map?['resultCode'] == 401) { isInitSuccess(); showOKToast('当前使用用户过多,请重试'); } else { @@ -364,6 +375,7 @@ class LoginLogic extends GetxController { @override void dispose() { super.dispose(); + sub?.cancel(); t?.cancel(); } diff --git a/circle_app/lib/circle_app/login/login/view.dart b/circle_app/lib/circle_app/login/login/view.dart index 58975b0..f841f69 100644 --- a/circle_app/lib/circle_app/login/login/view.dart +++ b/circle_app/lib/circle_app/login/login/view.dart @@ -395,10 +395,9 @@ class LoginPage extends StatelessWidget { Container( width: 280.sp, child: Row( - mainAxisAlignment: !logic.showOthner - ? MainAxisAlignment.spaceBetween - : MainAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.center, children: [ + if (logic.showOthner) GestureDetector( onTap: () { if (!logic.check) { @@ -442,11 +441,7 @@ class LoginPage extends StatelessWidget { Get.bottomSheet(privacyDialog(), isScrollControlled: true); } else { - if (logic.loginType == 1) { - showOKToast('请先切换验证码登录'); - return; - } - logic.login(); + logic.login(); } }, child: Container( @@ -464,35 +459,7 @@ class LoginPage extends StatelessWidget { Color(0xffD739EA) ])), child: Text( - '验证码登录', - style: TextStyle( - color: Colors.white, - fontSize: 16.sp, - fontWeight: FontWeight.w500), - ), - ), - ), - if (!logic.showOthner) - GestureDetector( - onTap: () { - logic.preLogin(); - }, - child: Container( - width: 85.sp, - height: 40.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, @@ -500,15 +467,58 @@ class LoginPage extends StatelessWidget { ), ), ), + // if (!logic.showOthner) + // GestureDetector( + // onTap: () { + // logic.preLogin(); + // }, + // child: Container( + // width: 85.sp, + // height: 40.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), + // ), + // ), + // ), ], ), ), + if (!logic.showOthner) Container( margin: EdgeInsets.only(top: 15.sp), - child: Text( - '若验证码未收到请打开数据网络使用[一键登录]', - style: TextStyle( - color: Colors.white, fontSize: 14.sp), + child: Row( + children: [ + Text( + '若验证码未收到请打开数据网络使用', + style: TextStyle( + color: Colors.white, fontSize: 16.sp), + ), + InkWell( + onTap: () { + logic.preLogin(); + }, + child: Text( + '[一键登录]', + style: TextStyle( + color: AppColor.mainColor, fontSize: 16.sp), + ), + ), + ], ), ) ], diff --git a/circle_app/lib/circle_app/msg/TIMUIKitConversation/tim_uikit_conversation.dart b/circle_app/lib/circle_app/msg/TIMUIKitConversation/tim_uikit_conversation.dart index 76bb454..f4610f6 100644 --- a/circle_app/lib/circle_app/msg/TIMUIKitConversation/tim_uikit_conversation.dart +++ b/circle_app/lib/circle_app/msg/TIMUIKitConversation/tim_uikit_conversation.dart @@ -5,7 +5,6 @@ import 'package:carousel_slider/carousel_slider.dart'; import 'package:circle_app/commons/colors/app_color.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; -import 'package:flutter_bugly/flutter_bugly.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_slidable_for_tencent_im/flutter_slidable.dart'; import 'package:get/get.dart'; diff --git a/circle_app/lib/circle_app/splash/logic.dart b/circle_app/lib/circle_app/splash/logic.dart index d9f87bf..526e8f3 100644 --- a/circle_app/lib/circle_app/splash/logic.dart +++ b/circle_app/lib/circle_app/splash/logic.dart @@ -45,14 +45,14 @@ class SplashLogic extends GetxController { checkStatus() async { if ((await getAuthorization()).isEmpty) { if (Platform.isIOS) { - pushLoginPage(); + Get.offAllNamed(Routes.Login); return; } bool isAgreemement = await getAgreemement(); if (!isAgreemement) { showReportDialog(); } else { - pushLoginPage(); + Get.offAllNamed(Routes.Login); initUmengSDK(); } } else { @@ -115,7 +115,7 @@ class SplashLogic extends GetxController { bean.code == 5001 || bean.code == 5002 || bean.code == 5003) { - pushLoginPage(); + Get.offAllNamed(Routes.Login); return; } showOKToast(bean.msg.toString()); @@ -125,7 +125,7 @@ class SplashLogic extends GetxController { if (token.isNotEmpty) { Get.offNamed(Routes.Home); } else { - pushLoginPage(); + Get.offAllNamed(Routes.Login); } } diff --git a/circle_app/lib/commons/widgets/unlock_wx_tip.dart b/circle_app/lib/commons/widgets/unlock_wx_tip.dart index 0c2dd77..2fdeedd 100644 --- a/circle_app/lib/commons/widgets/unlock_wx_tip.dart +++ b/circle_app/lib/commons/widgets/unlock_wx_tip.dart @@ -413,7 +413,7 @@ class _UnlockWxTipState extends State { style: TextStyle(color: Colors.white, fontSize: 14.sp), ), Text( - "TA设置了解锁价格,解锁小票全归TA", + "TA设置了价格,解锁就能免费加TA", style: TextStyle( color: const Color(0xFFEFD84E), fontSize: 10.0.sp), ), diff --git a/circle_app/lib/main.dart b/circle_app/lib/main.dart index deaa00e..b5bb33f 100644 --- a/circle_app/lib/main.dart +++ b/circle_app/lib/main.dart @@ -49,7 +49,7 @@ final GlobalKey navigatorKey = GlobalKey(); OverlayEntry? mainOverlayEntry; -void main() { +void main() async { if (!kDebugMode) { FlutterError.onError = (FlutterErrorDetails details) { // 发送错误信息到 Bugly @@ -64,7 +64,7 @@ void main() { SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle( systemNavigationBarColor: Colors.black, // 设置底部导航栏的颜色 )); - FlutterBugly.postCatchedException(() async { + // FlutterBugly.postCatchedException(() async { // 如果需要 ensureInitialized,请在这里运行。 WidgetsBinding widgetsBinding = WidgetsFlutterBinding.ensureInitialized(); FlutterNativeSplash.preserve(widgetsBinding: widgetsBinding); @@ -85,7 +85,7 @@ void main() { iOSAppId: "51e7b4e472", ); } - }); + // }); } setCustomErrorWidget() { @@ -278,42 +278,6 @@ class _MyAppState extends State with WidgetsBindingObserver { } } - getLoginStyle() async { - if ((await getAuthorization()).isEmpty) { - pushLoginPage(); - FlutterNativeSplash.remove(); - } else { - var data = - await DioManager.instance.put(url: Api.refreshToken, params: {}); - var bean = BaseResponse.fromJson( - data, (data) => LoginData.fromJson(data)); - if (bean.code == 200) { - SharedPreferencesHelper.getInstance().then((sharedPreferences) { - sharedPreferences.setString(SharedPreferencesHelper.AUTHORIZATION, - bean.data!.Authorization.toString()); - }); - FlutterNativeSplash.remove(); - Get.offNamed(Routes.Home); - - return; - } else if (bean.code == 30002) { - SharedPreferencesHelper.getInstance().then((sharedPreferences) { - sharedPreferences.setString(SharedPreferencesHelper.AUTHORIZATION, - bean.data!.Authorization.toString()); - }); - Get.offNamed(Routes.Complete_materialPage); - FlutterNativeSplash.remove(); - return; - } - showOKToast(bean.msg.toString()); - if (bean.code == 500) { - await Future.delayed(const Duration(seconds: 5)); - getLoginStyle(); - return; - } - } - } - initIM() { coreInstance.init( sdkAppID: IM_SDK_APP_ID, diff --git a/circle_app/pubspec.lock b/circle_app/pubspec.lock index 4be87b5..ed3518a 100644 --- a/circle_app/pubspec.lock +++ b/circle_app/pubspec.lock @@ -45,10 +45,10 @@ packages: dependency: "direct main" description: name: app_settings - sha256: e6a34735d4ddb24ca9c5fd7e965ec65c8b611cbd3a329152c294f9e9f4bacb33 + sha256: "2ec421f375d747916c4c0193933567074ea60c4f01c4a68642f07fef1002524e" url: "https://pub.flutter-io.cn" source: hosted - version: "4.3.1" + version: "4.0.4" archive: dependency: transitive description: @@ -638,14 +638,6 @@ packages: url: "https://pub.flutter-io.cn" source: hosted version: "1.1.3" - flutter_install_app: - dependency: "direct main" - description: - name: flutter_install_app - sha256: "9b117006d17c900e671c26bcbc9b15c7b8efd15d6f9b4442ad5d576de20fab53" - url: "https://pub.flutter-io.cn" - source: hosted - version: "1.3.0" flutter_intl: dependency: "direct main" description: diff --git a/circle_app/pubspec.yaml b/circle_app/pubspec.yaml index c8af779..58cb0d2 100644 --- a/circle_app/pubspec.yaml +++ b/circle_app/pubspec.yaml @@ -113,9 +113,9 @@ dependencies: #边框渐变 gradient_borders: ^1.0.0 #系统设置 安卓4.3.1 苹果4.0.4 - app_settings: 4.3.1 + app_settings: 4.0.4 #安装apk - flutter_install_app: 1.3.0 +# flutter_install_app: 1.3.0 #通知权限 notification_permissions: ^0.6.1 #分帧