From 2a84997430c3b3ccc0246aaffa287103d26052ad Mon Sep 17 00:00:00 2001 From: CYH <13923927013@163.com> Date: Thu, 26 Oct 2023 09:28:36 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=AE=89=E5=8D=93=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E5=8F=B71.2.0=EF=BC=8CiOS1.2.1=E7=BA=BF=E4=B8=8A?= =?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 | 2 +- .../ios/Runner.xcodeproj/project.pbxproj | 18 +- circle_app/ios/Runner/Info.plist | 2 + circle_app/lib/app/aboutapp/logic.dart | 6 +- .../tim_uikit_text_field.dart | 7 +- .../tim_uikit_text_field_layout/narrow.dart | 6 +- circle_app/lib/app/circle/logic.dart | 63 +- circle_app/lib/app/circle/view.dart | 24 +- .../lib/app/circle/widgets/discover.dart | 734 +++++++++--------- .../lib/app/circle/widgets/vicinity.dart | 155 ++-- circle_app/lib/app/dialog/UpdateDialog.dart | 4 +- .../lib/app/dialog/YesAgreementDialog.dart | 5 + circle_app/lib/app/home/logic.dart | 36 +- .../tim_uikit_conversation.dart | 4 +- circle_app/lib/app/msg/view.dart | 38 +- circle_app/lib/app/splash/logic.dart | 41 +- circle_app/lib/app/swiper/view.dart | 2 +- circle_app/lib/app/userinfo/view.dart | 4 + circle_app/lib/common/Widgets/add_wx_tip.dart | 1 + .../lib/common/Widgets/unlock_wx_tip.dart | 18 +- circle_app/lib/main.dart | 25 +- circle_app/lib/util/qiniu.dart | 7 +- circle_app/lib/util/util.dart | 2 +- circle_app/lib/view/notice.dart | 24 +- circle_app/pubspec.lock | 8 + circle_app/pubspec.yaml | 2 +- 26 files changed, 671 insertions(+), 567 deletions(-) diff --git a/circle_app/android/app/build.gradle b/circle_app/android/app/build.gradle index 51985fb..dc3ca8e 100644 --- a/circle_app/android/app/build.gradle +++ b/circle_app/android/app/build.gradle @@ -72,7 +72,7 @@ android { minSdkVersion 21 targetSdkVersion flutter.targetSdkVersion versionCode 14 - versionName "1.1.4" + versionName "1.2.0" 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 8898677..87ba7e9 100644 --- a/circle_app/ios/Runner.xcodeproj/project.pbxproj +++ b/circle_app/ios/Runner.xcodeproj/project.pbxproj @@ -363,11 +363,11 @@ DEVELOPMENT_TEAM = C39VUKAY2Z; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; - INFOPLIST_KEY_CFBundleDisplayName = "跨友Trans"; + INFOPLIST_KEY_CFBundleDisplayName = "微乐园"; INFOPLIST_KEY_NSCameraUsageDescription = "App会在上传头像时,需要访问您的相机权限"; INFOPLIST_KEY_NSLocationAlwaysUsageDescription = "应用想要访问您的位置,用于设置个人资料"; INFOPLIST_KEY_NSLocationWhenInUseUsageDescription = "App需要使用您的位置信息,寻找附近用户"; - INFOPLIST_KEY_NSMicrophoneUsageDescription = "$(PRODUCT_NAME)需要您同意,才能使用麦克风,用来发送语音"; + INFOPLIST_KEY_NSMicrophoneUsageDescription = "Runner需要您同意,才能使用麦克风,用来发送语音"; INFOPLIST_KEY_NSPhotoLibraryAddUsageDescription = "是否同意应用将图片保存到相册中?"; INFOPLIST_KEY_NSPhotoLibraryUsageDescription = "App会在上传头像时,需要访问您的相册权限"; INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; @@ -381,7 +381,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.2.0; + MARKETING_VERSION = 1.2.1; PRODUCT_BUNDLE_IDENTIFIER = com.exampe.circleApp; PRODUCT_NAME = "$(TARGET_NAME)"; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; @@ -512,11 +512,11 @@ DEVELOPMENT_TEAM = C39VUKAY2Z; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; - INFOPLIST_KEY_CFBundleDisplayName = "跨友Trans"; + INFOPLIST_KEY_CFBundleDisplayName = "微乐园"; INFOPLIST_KEY_NSCameraUsageDescription = "App会在上传头像时,需要访问您的相机权限"; INFOPLIST_KEY_NSLocationAlwaysUsageDescription = "应用想要访问您的位置,用于设置个人资料"; INFOPLIST_KEY_NSLocationWhenInUseUsageDescription = "App需要使用您的位置信息,寻找附近用户"; - INFOPLIST_KEY_NSMicrophoneUsageDescription = "$(PRODUCT_NAME)需要您同意,才能使用麦克风,用来发送语音"; + INFOPLIST_KEY_NSMicrophoneUsageDescription = "Runner需要您同意,才能使用麦克风,用来发送语音"; INFOPLIST_KEY_NSPhotoLibraryAddUsageDescription = "是否同意应用将图片保存到相册中?"; INFOPLIST_KEY_NSPhotoLibraryUsageDescription = "App会在上传头像时,需要访问您的相册权限"; INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; @@ -530,7 +530,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.2.0; + MARKETING_VERSION = 1.2.1; PRODUCT_BUNDLE_IDENTIFIER = com.exampe.circleApp; PRODUCT_NAME = "$(TARGET_NAME)"; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; @@ -555,11 +555,11 @@ DEVELOPMENT_TEAM = C39VUKAY2Z; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; - INFOPLIST_KEY_CFBundleDisplayName = "跨友Trans"; + INFOPLIST_KEY_CFBundleDisplayName = "微乐园"; INFOPLIST_KEY_NSCameraUsageDescription = "App会在上传头像时,需要访问您的相机权限"; INFOPLIST_KEY_NSLocationAlwaysUsageDescription = "应用想要访问您的位置,用于设置个人资料"; INFOPLIST_KEY_NSLocationWhenInUseUsageDescription = "App需要使用您的位置信息,寻找附近用户"; - INFOPLIST_KEY_NSMicrophoneUsageDescription = "$(PRODUCT_NAME)需要您同意,才能使用麦克风,用来发送语音"; + INFOPLIST_KEY_NSMicrophoneUsageDescription = "Runner需要您同意,才能使用麦克风,用来发送语音"; INFOPLIST_KEY_NSPhotoLibraryAddUsageDescription = "是否同意应用将图片保存到相册中?"; INFOPLIST_KEY_NSPhotoLibraryUsageDescription = "App会在上传头像时,需要访问您的相册权限"; INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; @@ -573,7 +573,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.2.0; + MARKETING_VERSION = 1.2.1; PRODUCT_BUNDLE_IDENTIFIER = com.exampe.circleApp; PRODUCT_NAME = "$(TARGET_NAME)"; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; diff --git a/circle_app/ios/Runner/Info.plist b/circle_app/ios/Runner/Info.plist index 5f4e1b7..37fb641 100644 --- a/circle_app/ios/Runner/Info.plist +++ b/circle_app/ios/Runner/Info.plist @@ -32,5 +32,7 @@ io.flutter.embedded_views_preview + UIApplicationSupportsIndirectInputEvents + diff --git a/circle_app/lib/app/aboutapp/logic.dart b/circle_app/lib/app/aboutapp/logic.dart index 9d86586..713ec55 100644 --- a/circle_app/lib/app/aboutapp/logic.dart +++ b/circle_app/lib/app/aboutapp/logic.dart @@ -1,4 +1,4 @@ -// import 'package:flutter_install_app/flutter_install_app.dart'; +import 'package:flutter_install_app/flutter_install_app.dart'; import 'package:dio/dio.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; @@ -32,7 +32,7 @@ class AboutappLogic extends GetxController { _updateInfo = bean.data; version = bean.data.version; update(); - // showReportDialog(Get.context!, bean.data.constraint == 0, bean.data); + showReportDialog(Get.context!, bean.data.constraint == 0, bean.data); } //getVersion(); @@ -41,7 +41,7 @@ class AboutappLogic extends GetxController { getVersion() async { final info = await PackageInfo.fromPlatform(); - currentVersion = "V:${info.version}"; + currentVersion = "V${info.version}"; //version = info.version; update(); return version; diff --git a/circle_app/lib/app/chat/TIMUIKitChat/TIMUIKitTextField/tim_uikit_text_field.dart b/circle_app/lib/app/chat/TIMUIKitChat/TIMUIKitTextField/tim_uikit_text_field.dart index a099415..317e53f 100644 --- a/circle_app/lib/app/chat/TIMUIKitChat/TIMUIKitTextField/tim_uikit_text_field.dart +++ b/circle_app/lib/app/chat/TIMUIKitChat/TIMUIKitTextField/tim_uikit_text_field.dart @@ -412,14 +412,17 @@ bool isSendLoging = false; focusNode.requestFocus(); _addDeleteTag(); } else {} - if (widget.model.editRevokedMsg != "") { + if (widget.model.editRevokedMsg.isNotEmpty) { narrowTextFieldKey.currentState?.showKeyboard = true; - focusNode.requestFocus(); + textEditingController.text = widget.model.editRevokedMsg; textEditingController.selection = TextSelection.fromPosition(TextPosition( affinity: TextAffinity.downstream, offset: widget.model.editRevokedMsg.length)); widget.model.editRevokedMsg = ""; + Future.delayed(Duration(milliseconds: 300),() { + focusNode.requestFocus(); + }); } } diff --git a/circle_app/lib/app/chat/TIMUIKitChat/TIMUIKitTextField/tim_uikit_text_field_layout/narrow.dart b/circle_app/lib/app/chat/TIMUIKitChat/TIMUIKitTextField/tim_uikit_text_field_layout/narrow.dart index e2a8de3..757bcd9 100644 --- a/circle_app/lib/app/chat/TIMUIKitChat/TIMUIKitTextField/tim_uikit_text_field_layout/narrow.dart +++ b/circle_app/lib/app/chat/TIMUIKitChat/TIMUIKitTextField/tim_uikit_text_field_layout/narrow.dart @@ -320,12 +320,12 @@ class _TIMTextFieldLayoutNarrowState final height = originHeight != 0 ? originHeight : currentKeyboardHeight; return height; } else if (showMore || showEmojiPanel) { - return 200.0 + (bottomPadding ?? 0.0); + return 240.0 + (bottomPadding ?? 0.0); } else if (widget.textEditingController.text.length >= 46 && showKeyboard == false) { return 15 + (bottomPadding ?? 0.0); } else { - return bottomPadding ?? 0; + return bottomPadding == 0 ? 10.sp : bottomPadding ?? 0; } } @@ -677,7 +677,7 @@ class _TIMTextFieldLayoutNarrowState Container( height: 40.sp, width: Get.width, - margin: EdgeInsets.only(bottom: showEmojiPanel ? 40.sp : 0), + margin: EdgeInsets.only(bottom: showEmojiPanel ? Platform.isIOS ? 40.sp : 10.sp : 0), child: Row( mainAxisAlignment: MainAxisAlignment.spaceAround, children: [ diff --git a/circle_app/lib/app/circle/logic.dart b/circle_app/lib/app/circle/logic.dart index 1562af2..c126f7c 100644 --- a/circle_app/lib/app/circle/logic.dart +++ b/circle_app/lib/app/circle/logic.dart @@ -43,25 +43,25 @@ class CircleLogic extends GetxController { List bannerList = []; + List genderList = []; + + List orientationList = []; + + List roleList = []; + + List dis_genderList = []; + + List dis_orientationList = []; + + List dis_roleList = []; + AutoScrollController scrollController = AutoScrollController(); ScrollController listScrollController = ScrollController(); @override - void onInit() async { + void onInit() { super.onInit(); - var data = await DioManager.instance.get( - url: Api.getCircleInterests, params: {"page": page, 'page_size': 20}); - var bean = BaseResponse.fromJson( - data, (data) => InterestsBean.fromJson(data)); - if (bean.data is InterestsBean && bean.isSuccess()) { - circle = bean.data!; - if (circle.lists.length < 20) { - isMore = false; - } - - update(); - } - // myVip = await getVip(); + loadCircleListData(); loadCirclePeopleData(); initGerder(); getCityList(); @@ -75,18 +75,21 @@ class CircleLogic extends GetxController { }); } - List genderList = []; - List orientationList = []; + loadCircleListData() async { + var data = await DioManager.instance.get( + url: Api.getCircleInterests, params: {"page": page, 'page_size': 20}); + var bean = BaseResponse.fromJson( + data, (data) => InterestsBean.fromJson(data)); + if (bean.data is InterestsBean && bean.isSuccess()) { + circle = bean.data!; + if (circle.lists.length < 20) { + isMore = false; + } - List roleList = []; - - - List dis_genderList = []; - - List dis_orientationList = []; - - List dis_roleList = []; + update(); + } + } void initGerder() async { var data1 = @@ -108,7 +111,6 @@ class CircleLogic extends GetxController { configBean.roleMap.forEach((key, value) { roleList.add(MyConfigData(key, value, false)); dis_roleList.add(MyConfigData(key, value, false)); - }); } @@ -131,7 +133,6 @@ class CircleLogic extends GetxController { } cityMap[provinceList[i].name] = areaMap; } - } catch (e) { print('Error loading JSON file: $e'); } @@ -238,7 +239,6 @@ class CircleLogic extends GetxController { } void getBanner() async { - var data = await DioManager.instance.get(url: Api.getNearbyBeanner, params: {}); var bean = BaseResponse.fromJson( @@ -268,7 +268,7 @@ class CircleLogic extends GetxController { orientationList.forEach((element) { if (element.isSelect) orientations.add(element.id); }); - if(offset==0){ + if (offset == 0) { getBanner(); } @@ -295,19 +295,16 @@ class CircleLogic extends GetxController { vicinityList.clear(); } - if (vicinityPage == 1) { refreshController.refreshCompleted(); } else { refreshController.loadComplete(); } - try{ - + try { vicinityList.addAll(bean.data.users); vicinityPage = vicinityPage + 1; - } on Exception{} - + } on Exception {} } else if (bean.code == 21201) { myVip = 0; refreshController.loadComplete(); diff --git a/circle_app/lib/app/circle/view.dart b/circle_app/lib/app/circle/view.dart index 82c4171..b1a1da7 100644 --- a/circle_app/lib/app/circle/view.dart +++ b/circle_app/lib/app/circle/view.dart @@ -535,6 +535,8 @@ class _CirclePageState extends State if (!logic.isMore) { showOKToast('小主,换个方向滑动呗~'); } + } else if (index == 0) { + showOKToast('小主,换个方向滑动呗~'); } print(index.toString()); @@ -609,25 +611,17 @@ class _CirclePageState extends State ), child: Container( margin: EdgeInsets.all(0.6.sp), + padding: EdgeInsets.only(left: 6.sp,right: 6.sp,top: 4.sp,bottom: 4.sp), + alignment: Alignment.center, decoration: BoxDecoration( borderRadius: BorderRadius.circular(17.0), color: const Color(0xFF392D53), ), - child: Padding( - padding: EdgeInsets.only( - top: 5.sp, - bottom: 4.sp, - left: 8.sp, - right: 8.sp, - ), - child: const Center( - child: Text( - "邀请得会员", - style: TextStyle( - fontSize: 11, - color: Colors.white, - ), - ), + child: Text( + "邀请得会员", + style: TextStyle( + fontSize: 12.sp, + color: Colors.white, ), ), ), diff --git a/circle_app/lib/app/circle/widgets/discover.dart b/circle_app/lib/app/circle/widgets/discover.dart index d5354f5..870f59e 100644 --- a/circle_app/lib/app/circle/widgets/discover.dart +++ b/circle_app/lib/app/circle/widgets/discover.dart @@ -59,11 +59,7 @@ class _DiscoverState extends State double nextOffset = 0; int lastPage = 0; - double screenHeight = Platform.isAndroid ? Get.height - - Get.statusBarHeight - Get.bottomBarHeight : Get.height - - Get.bottomBarHeight - - Get.statusBarHeight - - ((Get.height > 750 ? 115.sp : 155.sp) - Get.statusBarHeight); + double screenHeight = 0; void animateToOffset(ScrollController controller, double offset, @@ -143,6 +139,9 @@ class _DiscoverState extends State sub = EventBusManager.on().listen((event) { + pointerStart = Offset.zero; + pointerEnd = Offset.zero; + lastPage = 0; _scrollController.animateTo(0, duration: const Duration(milliseconds: 300), curve: Curves.easeInOut); }); @@ -259,383 +258,398 @@ class _DiscoverState extends State Widget build(BuildContext context) { // TODO: add widget build method - screenHeight = Platform.isAndroid ? Get.height - (widget.unlockWxNum == 1 ? 10.sp : Get.bottomBarHeight + 49.sp + 2.sp) - - Get.statusBarHeight : Get.height - - Get.bottomBarHeight - - Get.statusBarHeight - - ((Get.height > 750 ? 100.sp : 140.sp) - Get.statusBarHeight); + /// 延时一下,需要等state layout结束之后才能获取size + Future.delayed(Duration(milliseconds: 100), () { + if (!mounted) return; + if (screenHeight == 0 && list.isNotEmpty) { + var size = context?.findRenderObject()?.paintBounds?.size; + screenHeight = size!.height - 20.sp; + setState(() { + + }); + print(size.toString()); + } + + }); return list.isEmpty ? isMore ? loaddingWidget(true) : noResultWidget(tip: '已解锁微信的圈友会展示在这里哦~') - : Listener( - onPointerDown: getPointDownListenerInHorizontal(), - onPointerUp: getPointUpListenerInHorizontal(), - child: SmartRefresher( - onRefresh: refreshData, - controller: refreshController, - onLoading: _onLoading, - enablePullUp: true, - child: ListView.builder( - itemBuilder: (context, index) { - var user = Users.fromJson(list[index]); + : Stack( + fit: StackFit.expand, + children: [ + Container(color: Colors.transparent), + Listener( + onPointerDown: getPointDownListenerInHorizontal(), + onPointerUp: getPointUpListenerInHorizontal(), + child: SmartRefresher( + onRefresh: refreshData, + controller: refreshController, + onLoading: _onLoading, + enablePullUp: true, + child: ListView.builder( - String onLineStr = ''; - if (user.online! ?? false) { - onLineStr = '当前在线'; - if (user.distance != null) { - if (user.distance! < 100) { - onLineStr = '当前在线 · ${user.distance!}km'; - } - } - } else { - if (user.distance != null) { - if ((user.distance! ?? 10) < 100) { - onLineStr = '${user.distance!}km'; - } - } - } + itemBuilder: (context, index) { + var user = Users.fromJson(list[index]); - return Container( - height: screenHeight, - width: Get.width, - margin: EdgeInsets.only( - top: 5.sp, left: 16.sp, right: 16.sp), - child: Stack( - children: [ - Container( - clipBehavior: Clip.hardEdge, - decoration: BoxDecoration( - // borderRadius: BorderRadius.circular(10.sp), - image: DecorationImage( - fit: BoxFit.fill, - image: AssetImage( - getCircleImage('open_vip_bg'), - ))), - height: screenHeight, - width: Get.width, - child: ClipRRect( - borderRadius: BorderRadius.circular(18), + String onLineStr = ''; + if (user.online! ?? false) { + onLineStr = '当前在线'; + if (user.distance != null) { + if (user.distance! < 100) { + onLineStr = '当前在线 · ${user.distance!.toInt()}km'; + } + } + } else { + if (user.distance != null) { + if ((user.distance! ?? 10) < 100) { + onLineStr = '${user.distance!.toInt()}km'; + } + } + } + + return Container( + height: screenHeight, + width: Get.width, + margin: EdgeInsets.only( + top: 5.sp, left: 16.sp, right: 16.sp), + child: Stack( + children: [ + Container( clipBehavior: Clip.hardEdge, - child: Container( - padding: EdgeInsets.all(2.sp), - child: Swiper( - autoplay: - user.images!.length == 1 ? false : true, - loop: user.images!.length == 1 ? false : true, - itemBuilder: - (BuildContext context, int index) { - // print(index); - return GestureDetector( - onTap: () { - List imgList = []; - user.images!.forEach((element) { - imgList.add(element); - }); - - Get.toNamed(AppRoutes.Swiper, - arguments: { - 'imaglist': imgList, - 'index': index - }); - }, - child: CachedNetworkImage( - imageUrl: user.images![index], - fit: BoxFit.cover, - width: Get.width, - height: screenHeight, - )); - }, - itemCount: user.images!.length, - ), - )), - ), - Positioned( - left: 16.sp, - top: 20.sp, - child: Container( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - if (user.both_cities!.isNotEmpty) - Row( - children: [ - Container( - width: 6.sp, - height: 6.sp, - margin: - EdgeInsets.only(right: 4.sp), - decoration: BoxDecoration( - borderRadius: - BorderRadius.circular(3.sp), - color: const Color(0xFFCE51FF), - ), - ), - // if (logic.online) - Text( - "你们都来过${user.both_cities!.first}", - style: TextStyle( - color: Colors.white, - fontSize: 16.sp), - ), - ], - ), - if (user.both_interests!.isNotEmpty) - SizedBox( - height: 8.sp, - ), - if (user.both_interests!.isNotEmpty) - Row( - children: [ - Container( - width: 6.sp, - height: 6.sp, - margin: - EdgeInsets.only(right: 4.sp), - decoration: BoxDecoration( - borderRadius: - BorderRadius.circular(3.sp), - color: const Color(0xFFCE51FF), - ), - ), - // if (logic.online) - Text( - "你们有共同的圈子:${user.both_interests!.first['title']}", - style: TextStyle( - color: Colors.white, - fontSize: 16.sp), - ), - ], - ), - if (user.both_cities!.isNotEmpty) - SizedBox( - height: 8.sp, - ), - if (onLineStr.isNotEmpty) - Row( - children: [ - Container( - width: 6.sp, - height: 6.sp, - margin: - EdgeInsets.only(right: 4.sp), - decoration: BoxDecoration( - borderRadius: - BorderRadius.circular(3.sp), - color: const Color(0xFFCE51FF), - ), - ), - // if (logic.online) - Text( - onLineStr, - style: TextStyle( - color: Colors.white, - fontSize: 16.sp), - ), - ], - ), - ], - ), - )), - Positioned( - right: 16.sp, - top: 16.sp, - child: GestureDetector( - onTap: () { - Get.toNamed(AppRoutes.UserInfoActivity, - arguments: user.userId!.toString()); - }, - child: Container( - width: 73.sp, - height: 25.sp, - decoration: BoxDecoration( - gradient: AppColor.mainVerLinearGradient, - borderRadius: - BorderRadius.circular(12.5.sp)), - child: Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Container( - margin: EdgeInsets.only(left: 5.sp), - child: Text( - '查看主页', - style: TextStyle( - color: Colors.white, - fontSize: 10.sp, - ), - ), - ), - Image( - width: 15.sp, + decoration: BoxDecoration( + // borderRadius: BorderRadius.circular(10.sp), + image: DecorationImage( + fit: BoxFit.fill, image: AssetImage( - getDisCoverImage("right_icon")), - // width: 44.sp, + getCircleImage('open_vip_bg'), + ))), + height: screenHeight, + width: Get.width, + child: ClipRRect( + borderRadius: BorderRadius.circular(18), + clipBehavior: Clip.hardEdge, + child: Container( + padding: EdgeInsets.all(2.sp), + child: Swiper( + autoplay: + user.images!.length == 1 ? false : true, + loop: user.images!.length == 1 ? false : true, + itemBuilder: + (BuildContext context, int index) { + // print(index); + return GestureDetector( + onTap: () { + List imgList = []; + user.images!.forEach((element) { + imgList.add(element); + }); + + Get.toNamed(AppRoutes.Swiper, + arguments: { + 'imaglist': imgList, + 'index': index + }); + }, + child: CachedNetworkImage( + imageUrl: user.images![index], + fit: BoxFit.cover, + width: Get.width, + height: screenHeight, + )); + }, + itemCount: user.images!.length, ), - ], - ), - ), - )), - Positioned( - left: 6.sp, - bottom: 6.sp, - child: Container( - width: Get.width - 32.sp, - padding: EdgeInsets.only(right: 0.sp), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - if (user.wxNum != null) - wxStatusWidget( - user.unLockWxNum == 1, - user.wxNum!, - user.userId.toString(), - user.avatarUrl!, () { - loadSignDiscoverData( - user.userId.toString()); - }), - SizedBox( - height: 10.sp, - ), - Row( + )), + ), + Positioned( + left: 16.sp, + top: 20.sp, + child: Container( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, children: [ - Text( - user.nickname ?? '', - style: TextStyle( - fontSize: 18.sp, - color: Color(0XFFF7FAFA), - fontWeight: FontWeight.bold), - ), - Container( - margin: EdgeInsets.only(left: 5.sp), - alignment: Alignment.center, - height: 18.sp, - padding: EdgeInsets.only( - left: 6.sp, right: 6.sp), - decoration: BoxDecoration( - borderRadius: - BorderRadius.circular(9.sp), - gradient: const LinearGradient( - begin: Alignment(0.25, 0.5), - end: Alignment(0.75, 0.5), - colors: [ - Color(0xff8DFFF8), - Color(0xffB5D3FF) - ])), - child: Text( - getAgeCOntent( - user!.gender ?? 0, - user!.age ?? 0, - user!.role ?? 0, - user!.orientation ?? 0), - style: TextStyle( - color: Colors.black, - fontSize: 12.sp, - ), + if (user.both_cities!.isNotEmpty) + Row( + children: [ + Container( + width: 6.sp, + height: 6.sp, + margin: + EdgeInsets.only(right: 4.sp), + decoration: BoxDecoration( + borderRadius: + BorderRadius.circular(3.sp), + color: const Color(0xFFCE51FF), + ), + ), + // if (logic.online) + Text( + "你们都来过${user.both_cities!.first}", + style: TextStyle( + color: Colors.white, + fontSize: 16.sp), + ), + ], ), + if (user.both_interests!.isNotEmpty) + SizedBox( + height: 8.sp, + ), + if (user.both_interests!.isNotEmpty) + Row( + children: [ + Container( + width: 6.sp, + height: 6.sp, + margin: + EdgeInsets.only(right: 4.sp), + decoration: BoxDecoration( + borderRadius: + BorderRadius.circular(3.sp), + color: const Color(0xFFCE51FF), + ), + ), + // if (logic.online) + Text( + "你们有共同的圈子:${user.both_interests!.first['title']}", + style: TextStyle( + color: Colors.white, + fontSize: 16.sp), + ), + ], + ), + if (user.both_cities!.isNotEmpty) + SizedBox( + height: 8.sp, ), - if (user.vip! > 0) - Container( - margin: EdgeInsets.only( - left: 4.sp, - ), - child: Image.asset( - getCircleImage(user!.vip == 1 - ? 'vip' - : 'year_vip'), - width: 36.sp, - ), + if (onLineStr.isNotEmpty) + Row( + children: [ + Container( + width: 6.sp, + height: 6.sp, + margin: + EdgeInsets.only(right: 4.sp), + decoration: BoxDecoration( + borderRadius: + BorderRadius.circular(3.sp), + color: const Color(0xFFCE51FF), + ), + ), + // if (logic.online) + Text( + onLineStr, + style: TextStyle( + color: Colors.white, + fontSize: 16.sp), + ), + ], ), ], ), - Container( - width: Get.width - 120.sp, - margin: EdgeInsets.only(top: 5.sp), - child: Text( - user.signature! ?? '', - overflow: TextOverflow.ellipsis, - maxLines: 2, - style: TextStyle( - fontSize: 15.sp, - color: const Color(0XFFF7FAFA)), - ), - ), - Container( - width: Get.width - 110.sp, - height: 35.sp, - child: tagItem(user.interests!), - ), - ], - ), - )), - Positioned( - bottom: 5.sp, - right: 15.sp, - child: Container( - child: Column( - children: [ - GestureDetector( - onTap: () { - pushChatPage( - user.userId.toString(), - user.imAccid!.toString(), - user.nickname!); - }, - child: Image.asset( - getCircleImage( - 'chat_icon', - ), - width: 50.sp, - ), - ), - SizedBox( + )), + Positioned( + right: 16.sp, + top: 16.sp, + child: GestureDetector( + onTap: () { + Get.toNamed(AppRoutes.UserInfoActivity, + arguments: user.userId!.toString()); + }, + child: Container( + width: 73.sp, height: 25.sp, - ), - GestureDetector( - onTap: () { - setLike(user.userId!.toString(), - user.is_follow!, () { - list[index]['is_follow'] = - !user.is_follow!; - setState(() {}); - }); - }, - child: Image.asset( - getCircleImage( - user.is_follow! - ? 'like_icon' - : 'nor_like_icon', - ), - width: 50.sp, + decoration: BoxDecoration( + gradient: AppColor.mainVerLinearGradient, + borderRadius: + BorderRadius.circular(12.5.sp)), + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Container( + margin: EdgeInsets.only(left: 5.sp), + child: Text( + '查看主页', + style: TextStyle( + color: Colors.white, + fontSize: 10.sp, + ), + ), + ), + Image( + width: 15.sp, + image: AssetImage( + getDisCoverImage("right_icon")), + // width: 44.sp, + ), + ], ), ), - SizedBox( - height: 20.sp, + )), + Positioned( + left: 6.sp, + bottom: 6.sp, + child: Container( + width: Get.width - 32.sp, + padding: EdgeInsets.only(right: 0.sp), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + if (user.wxNum != null) + wxStatusWidget( + user.unLockWxNum == 1, + user.wxNum!, + user.userId.toString(), + user.avatarUrl!, () { + loadSignDiscoverData( + user.userId.toString()); + }), + SizedBox( + height: 10.sp, + ), + Row( + children: [ + Text( + user.nickname ?? '', + style: TextStyle( + fontSize: 18.sp, + color: Color(0XFFF7FAFA), + fontWeight: FontWeight.bold), + ), + Container( + margin: EdgeInsets.only(left: 5.sp), + alignment: Alignment.center, + height: 18.sp, + padding: EdgeInsets.only( + left: 6.sp, right: 6.sp), + decoration: BoxDecoration( + borderRadius: + BorderRadius.circular(9.sp), + gradient: const LinearGradient( + begin: Alignment(0.25, 0.5), + end: Alignment(0.75, 0.5), + colors: [ + Color(0xff8DFFF8), + Color(0xffB5D3FF) + ])), + child: Text( + getAgeCOntent( + user!.gender ?? 0, + user!.age ?? 0, + user!.role ?? 0, + user!.orientation ?? 0), + style: TextStyle( + color: Colors.black, + fontSize: 12.sp, + ), + ), + ), + if (user.vip! > 0) + Container( + margin: EdgeInsets.only( + left: 4.sp, + ), + child: Image.asset( + getCircleImage(user!.vip == 1 + ? 'vip' + : 'year_vip'), + width: 36.sp, + ), + ), + ], + ), + Container( + width: Get.width - 120.sp, + margin: EdgeInsets.only(top: 5.sp), + child: Text( + user.signature! ?? '', + overflow: TextOverflow.ellipsis, + maxLines: 2, + style: TextStyle( + fontSize: 15.sp, + color: const Color(0XFFF7FAFA)), + ), + ), + Container( + width: Get.width - 110.sp, + height: 35.sp, + child: tagItem(user.interests!), + ), + ], ), - GestureDetector( - onTap: () { - _showReportDialog(context,user.userId!.toString(),index); + )), + Positioned( + bottom: 5.sp, + right: 15.sp, + child: Container( + child: Column( + children: [ + GestureDetector( + onTap: () { + pushChatPage( + user.userId.toString(), + user.imAccid!.toString(), + user.nickname!); + }, + child: Image.asset( + getCircleImage( + 'chat_icon', + ), + width: 50.sp, + ), + ), + SizedBox( + height: 25.sp, + ), + GestureDetector( + onTap: () { + setLike(user.userId!.toString(), + user.is_follow!, () { + list[index]['is_follow'] = + !user.is_follow!; + setState(() {}); + }); + }, + child: Image.asset( + getCircleImage( + user.is_follow! + ? 'like_icon' + : 'nor_like_icon', + ), + width: 50.sp, + ), + ), + SizedBox( + height: 20.sp, + ), + GestureDetector( + onTap: () { + _showReportDialog(context,user.userId!.toString(),index); - }, - child: Image.asset( - getCircleImage( - 'no_look_icon', - ), - width: 50.sp, - ), - ) - ], - ), - )) - ], - )); - }, - itemCount: list.length, - physics: BouncingScrollPhysics(), - controller: _scrollController, + }, + child: Image.asset( + getCircleImage( + 'no_look_icon', + ), + width: 50.sp, + ), + ) + ], + ), + )) + ], + )); + }, + itemCount: list.length, + physics: BouncingScrollPhysics(), + controller: _scrollController, + ), + ), ), - ), - ); + ], + ); } tagItem(List item) { diff --git a/circle_app/lib/app/circle/widgets/vicinity.dart b/circle_app/lib/app/circle/widgets/vicinity.dart index 911dd35..ea4c7d2 100644 --- a/circle_app/lib/app/circle/widgets/vicinity.dart +++ b/circle_app/lib/app/circle/widgets/vicinity.dart @@ -34,17 +34,17 @@ class _VicinityState extends State with AutomaticKeepAliveClientMixin // TODO: implement initState super.initState(); sub = EventBusManager.on().listen((event) { - if (widget.logic.myVip > 0) { + // if (widget.logic.myVip > 0) { _scrollController.animateTo(0, duration: const Duration(milliseconds: 300), curve: Curves.easeInOut); - } + // } }); - _scrollController.addListener(() { - if (maxOff > 0 && widget.logic.myVip == 0 && _scrollController.offset >= maxOff) { - _scrollController.jumpTo(maxOff); - } - }); + // _scrollController.addListener(() { + // if (maxOff > 0 && widget.logic.myVip == 0 && _scrollController.offset >= maxOff) { + // _scrollController.jumpTo(maxOff); + // } + // }); } @override @@ -59,9 +59,7 @@ class _VicinityState extends State with AutomaticKeepAliveClientMixin @override Widget build(BuildContext context) { // TODO: add widget build method - if (widget.logic.myVip == 0 && _scrollController.offset > Get.height) { - _scrollController.jumpTo(_scrollController.offset - 150.sp); - } + return widget.logic.vicinityList.isNotEmpty ? Stack( fit: StackFit.expand, children: [ @@ -69,24 +67,34 @@ class _VicinityState extends State with AutomaticKeepAliveClientMixin controller: widget.logic.refreshController, onRefresh: _onRefresh, onLoading: _onLoading, - enablePullUp: true, + enablePullUp: widget.logic.myVip == 0 ? false : true, child: ListView.builder( controller: _scrollController, padding: EdgeInsets.all(10.sp), - itemCount: widget.logic.vicinityList.length + 1, + itemCount:widget.logic.vicinityList.length + 1, itemBuilder: (context, index) { if (index == 0) { return bannerView(widget.logic); } else { + if (widget.logic.myVip == 0 && index == widget.logic.vicinityList.length) { + // return; + return Stack( + children: [ + ListItem(widget.logic.vicinityList[index - 1], index - 1), + showVipView() + ], + ); + } else { return ListItem(widget.logic.vicinityList[index - 1], index - 1); + } } }, ), ), - if (widget.logic.myVip == 0) - Positioned( - bottom: 0, - child: showVipView()) + // if (widget.logic.myVip == 0) + // Positioned( + // bottom: 0, + // child: showVipView()) ], ) : loaddingWidget(true); } @@ -162,58 +170,73 @@ class _VicinityState extends State with AutomaticKeepAliveClientMixin Widget showVipView() { return Container( - width: Get.width, - // margin: EdgeInsets.only(top: 10.sp), - color: Colors.black87, - padding: EdgeInsets.symmetric(vertical: 14.sp, horizontal: 20.sp), - child: Column( - children: [ - Center( - child: Text( - "VIP特权", - style: TextStyle(color: Colors.white, fontSize: 16.sp), - ), - ), - Container( - padding: EdgeInsets.only(top: 18.sp), - child: Text( - "开通VIP后,才能查看更多附近的圈友,也可以根据您的喜好、属性、角色、取向等筛选出想要认识的人,还可以获得其他十几种会员特权,拥有更多不一样的体验", - style: TextStyle(color: Colors.white, fontSize: 14.sp), - ), - ), - GestureDetector( - onTap: () async { - widget.logic.showRechargeDialog(); - }, - child: Center( - child: Container( - margin: EdgeInsets.only(top: 14.sp), - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(17), - gradient: const LinearGradient( - colors: [ - Color(0xFF06F9FA), - Color(0xFFDC5BFD), - ], - begin: Alignment.centerLeft, - end: Alignment.centerRight, - ), - ), - padding: EdgeInsets.symmetric( - vertical: 10.sp, - horizontal: 55.sp, - ), - child: const Text( - "前往开通VIP", - style: TextStyle( - color: Colors.white, - fontSize: 12, - ), + margin: EdgeInsets.only(top: 10.sp), + child: Stack( + children: [ + Positioned( + bottom: 0, + child: Container( + color: Colors.black, + width: Get.width, + height: 100.sp, + padding: EdgeInsets.symmetric(vertical: 25.sp), + )), + Container( + width: Get.width, + // margin: EdgeInsets.only(top: 10.sp), + color: Colors.black.withOpacity(0.87), + padding: EdgeInsets.symmetric(vertical: 25.sp, horizontal: 20.sp), + child: Column( + children: [ + Center( + child: Text( + "VIP特权", + style: TextStyle(color: Colors.white, fontSize: 16.sp), ), ), - )) - ], - )); + Container( + padding: EdgeInsets.only(top: 18.sp), + child: Text( + "开通VIP后,才能查看更多附近的圈友,也可以根据您的喜好、属性、角色、取向等筛选出想要认识的人,还可以获得其他十几种会员特权,拥有更多不一样的体验", + style: TextStyle(color: Colors.white, fontSize: 14.sp), + ), + ), + GestureDetector( + onTap: () async { + widget.logic.showRechargeDialog(); + }, + child: Center( + child: Container( + margin: EdgeInsets.only(top: 14.sp), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(17), + gradient: const LinearGradient( + colors: [ + Color(0xFF06F9FA), + Color(0xFFDC5BFD), + ], + begin: Alignment.centerLeft, + end: Alignment.centerRight, + ), + ), + padding: EdgeInsets.symmetric( + vertical: 10.sp, + horizontal: 55.sp, + ), + child: const Text( + "前往开通VIP", + style: TextStyle( + color: Colors.white, + fontSize: 12, + ), + ), + ), + )) + ], + )), + ], + ), + ); } Widget ListItem(VicinityItemBean item, int index) { diff --git a/circle_app/lib/app/dialog/UpdateDialog.dart b/circle_app/lib/app/dialog/UpdateDialog.dart index 721370e..bdd1479 100644 --- a/circle_app/lib/app/dialog/UpdateDialog.dart +++ b/circle_app/lib/app/dialog/UpdateDialog.dart @@ -2,7 +2,7 @@ import 'dart:io'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; - // import 'package:flutter_install_app/flutter_install_app.dart'; + import 'package:flutter_install_app/flutter_install_app.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:url_launcher/url_launcher.dart'; @@ -260,7 +260,7 @@ class _CustomDialogState extends State { // SmartDialog.dismiss(); print(error); }); - // await AppInstaller.installApk(filePath, actionRequired: false); + await AppInstaller.installApk(filePath, actionRequired: false); } } diff --git a/circle_app/lib/app/dialog/YesAgreementDialog.dart b/circle_app/lib/app/dialog/YesAgreementDialog.dart index 8c8e8df..70f1640 100644 --- a/circle_app/lib/app/dialog/YesAgreementDialog.dart +++ b/circle_app/lib/app/dialog/YesAgreementDialog.dart @@ -7,6 +7,7 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; +import 'package:flutter_bugly/flutter_bugly.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:tencent_chat_push_for_china/tencent_chat_push_for_china.dart'; @@ -147,6 +148,10 @@ class _CustomDialogState extends State { uploadBuzIDAndToken(); SmartDialog.dismiss(); pushLoginPage(); + FlutterBugly.init( + androidAppId: "8509314e11", + iOSAppId: "51e7b4e472", + ); }, child: Container( width: 240.sp, diff --git a/circle_app/lib/app/home/logic.dart b/circle_app/lib/app/home/logic.dart index 91f548a..a5a270f 100644 --- a/circle_app/lib/app/home/logic.dart +++ b/circle_app/lib/app/home/logic.dart @@ -131,25 +131,27 @@ class HomeLogic extends GetxController { showOKToast(bean.msg); } getUnreadSize() async { - V2TimValueCallback getTotalUnreadMessageCountRes = - await TencentImSDKPlugin.v2TIMManager - .getConversationManager() - .getTotalUnreadMessageCount(); - print("未读数量desc=" + - getTotalUnreadMessageCountRes.desc.toString() + - "code=" + - getTotalUnreadMessageCountRes.code.toString() + - "data=" + - getTotalUnreadMessageCountRes.data.toString()); + try { + V2TimValueCallback getTotalUnreadMessageCountRes = + await TencentImSDKPlugin.v2TIMManager + .getConversationManager() + .getTotalUnreadMessageCount(); + print("未读数量desc=" + + getTotalUnreadMessageCountRes.desc.toString() + + "code=" + + getTotalUnreadMessageCountRes.code.toString() + + "data=" + + getTotalUnreadMessageCountRes.data.toString()); - if (getTotalUnreadMessageCountRes.code == 0) { - unreadSIze.value = getTotalUnreadMessageCountRes.data.toString(); - if (Platform.isAndroid) { - setOfflinePushStatus(status: AppStatus.foreground); + if (getTotalUnreadMessageCountRes.code == 0) { + unreadSIze.value = getTotalUnreadMessageCountRes.data.toString(); + if (Platform.isAndroid) { + setOfflinePushStatus(status: AppStatus.foreground); + } + } else { + getUnreadSize(); } - } else { - getUnreadSize(); - } + } catch (e) {} } @override diff --git a/circle_app/lib/app/msg/TIMUIKitConversation/tim_uikit_conversation.dart b/circle_app/lib/app/msg/TIMUIKitConversation/tim_uikit_conversation.dart index c9ff67c..004ab23 100644 --- a/circle_app/lib/app/msg/TIMUIKitConversation/tim_uikit_conversation.dart +++ b/circle_app/lib/app/msg/TIMUIKitConversation/tim_uikit_conversation.dart @@ -459,8 +459,8 @@ class _TIMConversationState extends TIMUIKitState { } }); //自己的信息 - V2TimUserFullInfo myuserFullInfo = - snapshot.data!.first; + V2TimUserFullInfo myuserFullInfo =snapshot.data!.where((element) => element.userID! == model.selfInfoViewModel.loginInfo!.userID!).toList().first; + if (userFullInfo!.customInfo! .containsKey('Label')) { diff --git a/circle_app/lib/app/msg/view.dart b/circle_app/lib/app/msg/view.dart index 1b73b47..dde3471 100644 --- a/circle_app/lib/app/msg/view.dart +++ b/circle_app/lib/app/msg/view.dart @@ -4,6 +4,7 @@ import 'package:cached_network_image/cached_network_image.dart'; import 'package:circle_app/app/circle/logic.dart'; import 'package:circle_app/app/circle/view.dart'; import 'package:circle_app/common/Widgets/open_vip_tip/view.dart'; +import 'package:circle_app/common/colors/app_color.dart'; import 'package:circle_app/main.dart'; import 'package:circle_app/network/api.dart'; import 'package:circle_app/network/dio_manager.dart'; @@ -123,6 +124,40 @@ class MsgPage extends StatelessWidget { }); } + String count = '0'; + if (logic != null) { + count = (logic.statistics.value.likeMeCount ?? 0).toString(); + } + + if (int.parse(count) > 0) { + widgets.add(Positioned( + left: 15.sp * i, + child: Stack( + alignment: Alignment.center, + children: [ + Image.asset( + getCircleImage('avatar_bg'), + width: 30.sp, + height: 30.sp, + ), + Container( + alignment: Alignment.center, + width: 28.sp, + height: 28.sp, + child: Text( + int.parse(count) > 99 + ? '99+' + : count, + style: TextStyle( + color: Colors.white, + fontSize: int.parse(count) > 99 ? 10.sp : 12.sp), + ), + ), + ], + ), + )); + } + return Container( width: Get.width, padding: EdgeInsets.only(left: 18.sp, right: 18.sp), @@ -141,8 +176,7 @@ class MsgPage extends StatelessWidget { height: 30.sp, width: 30.0.sp + 15.sp * - (widgets.length - - 1.sp), + (widgets.length), child: Stack( children: widgets, ), diff --git a/circle_app/lib/app/splash/logic.dart b/circle_app/lib/app/splash/logic.dart index 4eecb93..3705e25 100644 --- a/circle_app/lib/app/splash/logic.dart +++ b/circle_app/lib/app/splash/logic.dart @@ -27,31 +27,32 @@ class SplashLogic extends GetxController { super.onReady(); } - @override - void onInit() async { + void onInit() { super.onInit(); // await Future.delayed(Duration(seconds: 30)); - var data1 = - await DioManager.instance.get(url: Api.getCircleList, params: {}); - var bean1 = BaseResponse.fromJson( - data1, (data1) => ConfigBean.fromJson(data1)); - if (bean1.code == 200) { - configBean = bean1.data!; - - configBean.genderMap.forEach((key, value) { - genderList.add(value); - }); - - configBean.orientationMap.forEach((key, value) { - orientationList.add(value); - }); - configBean.roleMap.forEach((key, value) { - roleList.add(value); - }); - } + // var data1 = + // await DioManager.instance.get(url: Api.getCircleList, params: {}); + // var bean1 = BaseResponse.fromJson( + // data1, (data1) => ConfigBean.fromJson(data1)); + // if (bean1.code == 200) { + // configBean = bean1.data!; + // + // configBean.genderMap.forEach((key, value) { + // genderList.add(value); + // }); + // + // configBean.orientationMap.forEach((key, value) { + // orientationList.add(value); + // }); + // configBean.roleMap.forEach((key, value) { + // roleList.add(value); + // }); + // } + } + checkStatus() async { if ((await getAuthorization()).isEmpty) { if (Platform.isIOS) { pushLoginPage(); diff --git a/circle_app/lib/app/swiper/view.dart b/circle_app/lib/app/swiper/view.dart index d92d397..c5db245 100644 --- a/circle_app/lib/app/swiper/view.dart +++ b/circle_app/lib/app/swiper/view.dart @@ -99,7 +99,7 @@ class _SwiperPageState extends State { Container( // color: Colors.red, child: CachedNetworkImage( - imageUrl: logic.imgList[index], + imageUrl: logic.imgList[index].toString().contains('?') ? logic.imgList[index].toString().split('?').first : logic.imgList[index].toString(), fit: BoxFit.contain, ), ), diff --git a/circle_app/lib/app/userinfo/view.dart b/circle_app/lib/app/userinfo/view.dart index 97fc278..053f6a2 100644 --- a/circle_app/lib/app/userinfo/view.dart +++ b/circle_app/lib/app/userinfo/view.dart @@ -4,6 +4,7 @@ import 'package:circle_app/common/Widgets/base_tip_widget.dart'; import 'package:circle_app/common/colors/app_color.dart'; import 'package:circle_app/common/const.dart'; import 'package:circle_app/main.dart'; +import 'package:circle_app/view/notice.dart'; import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; @@ -50,6 +51,9 @@ class MyTabbedScreenState extends State @override void dispose() { _tabController.dispose(); + if (OverlayClass.overlayEntry != null) { + OverlayClass.overlayEntry!.remove(); + } super.dispose(); } diff --git a/circle_app/lib/common/Widgets/add_wx_tip.dart b/circle_app/lib/common/Widgets/add_wx_tip.dart index fa024e7..349799d 100644 --- a/circle_app/lib/common/Widgets/add_wx_tip.dart +++ b/circle_app/lib/common/Widgets/add_wx_tip.dart @@ -44,6 +44,7 @@ class _AddWxTipState extends State { children: [ Expanded( child: Container( + width:Get.width - 30.sp, decoration: BoxDecoration( color: Color(0x99000000), image: DecorationImage( diff --git a/circle_app/lib/common/Widgets/unlock_wx_tip.dart b/circle_app/lib/common/Widgets/unlock_wx_tip.dart index ebd6cd7..c515556 100644 --- a/circle_app/lib/common/Widgets/unlock_wx_tip.dart +++ b/circle_app/lib/common/Widgets/unlock_wx_tip.dart @@ -174,6 +174,7 @@ class _UnlockWxTipState extends State { } else { unlockingPayment(prices[selectedIndex].id.toString(), (){ Get.back(); + showOKToast('微信号解锁成功'); unLockWxSuccessResult(widget.userId); }); } @@ -269,20 +270,15 @@ class _UnlockWxTipState extends State { width: 40.sp, alignment: Alignment.center, decoration: BoxDecoration( - shape: BoxShape.circle, - gradient: AppColor.mainVerLinearGradient + // shape: BoxShape.circle, + // gradient: AppColor.mainVerLinearGradient ), - child: Text( - 'VIP', - - style: TextStyle(color: Colors.white, fontSize: 12.sp,fontWeight: FontWeight.w500), + child: Image.asset( + getDisCoverImage('wx'), // Replace this with the actual image path + width: 35.sp ), ), - // Image.asset( - // iconIv, // Replace this with the actual image path - // width: 31.sp, - // height: 29.sp, - // ), + SizedBox(width: 8.sp), Column( mainAxisAlignment: MainAxisAlignment.center, diff --git a/circle_app/lib/main.dart b/circle_app/lib/main.dart index 0627986..73ddf41 100644 --- a/circle_app/lib/main.dart +++ b/circle_app/lib/main.dart @@ -37,15 +37,22 @@ final TUIChatSeparateViewModel chatSeparateViewModel = TUIChatSeparateViewModel(); void main() { - FlutterBugly.postCatchedException(() { + FlutterBugly.postCatchedException(() async { // 如果需要 ensureInitialized,请在这里运行。 WidgetsBinding widgetsBinding = WidgetsFlutterBinding.ensureInitialized(); FlutterNativeSplash.preserve(widgetsBinding: widgetsBinding); runApp(MyApp()); - FlutterBugly.init( - androidAppId: "8509314e11", - iOSAppId: "51e7b4e472", - ); + if (Platform.isAndroid) { + bool isAgreemement = await getAgreemement(); + if (isAgreemement) { + FlutterBugly.init( + androidAppId: "8509314e11", + iOSAppId: "51e7b4e472", + ); + } + } + + }); if (Platform.isAndroid) { getLostData(); @@ -104,8 +111,12 @@ loginIM(String userId, String sig) async { //退出IM logoutIM() async { - final result = await coreInstance.logout(); - print(result.desc + '退出IM'); + try { + final result = await coreInstance.logout(); + print(result.desc + '退出IM'); + } catch (e) { + + } } //获取设备Token,获取成功后开启离线推送 diff --git a/circle_app/lib/util/qiniu.dart b/circle_app/lib/util/qiniu.dart index d315984..abcdf0c 100644 --- a/circle_app/lib/util/qiniu.dart +++ b/circle_app/lib/util/qiniu.dart @@ -65,14 +65,13 @@ void uploadImage(String quToken, XFile pickedFile, String updataRoute, } } - //if(isImageJpgOrPng(pickedFile.path)){ - if (false) { + if(isImageJpgOrPng(pickedFile.path)){ var path = await getApplicationSupportDirectoryPath(); CompressObject compressObject = CompressObject( imageFile: File(pickedFile.path), path: path, quality: 80, - step: 6, + step: 9, mode: CompressMode.AUTO, ); Luban.compressImage(compressObject).then((_path) { @@ -86,8 +85,6 @@ void uploadImage(String quToken, XFile pickedFile, String updataRoute, SmartDialog.dismiss(force: true); }); } else { - // var path = await getApplicationSupportDirectoryPath(); - // String outputPath = path; uploadQiniu(pickedFile.path, pickedFile.name, updataRoute, quToken, (result) { myCallback(result); }); diff --git a/circle_app/lib/util/util.dart b/circle_app/lib/util/util.dart index 126b8ad..f437f2c 100644 --- a/circle_app/lib/util/util.dart +++ b/circle_app/lib/util/util.dart @@ -309,7 +309,7 @@ class CustomLoadFooter extends StatelessWidget { canLoadingText: "松手开始加载数据", loadingText: "正在加载...", idleText: "上拉加载更多", - noDataText: "没有更多数据了", + noDataText: "只展示推荐的哦~", failedText: "加载失败", ); } diff --git a/circle_app/lib/view/notice.dart b/circle_app/lib/view/notice.dart index 67dba61..c7521f5 100644 --- a/circle_app/lib/view/notice.dart +++ b/circle_app/lib/view/notice.dart @@ -6,7 +6,9 @@ import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; typedef void NoticeCallback(); - + class OverlayClass { + static OverlayEntry? overlayEntry; +} void showFloatingButtonOverlay( BuildContext context, String nickname, String ageMsg, String avatar,int event,NoticeCallback noticeCallback) { @@ -20,7 +22,7 @@ void showFloatingButtonOverlay( late Timer countdownTimer; // 创建 OverlayEntry - overlayEntry = OverlayEntry( + OverlayClass.overlayEntry = OverlayEntry( builder: (BuildContext context) { return Positioned( top: 30, @@ -117,7 +119,11 @@ void showFloatingButtonOverlay( GestureDetector( onTap: () { countdownTimer.cancel(); // 取消计时器 - overlayEntry.remove(); + try { + OverlayClass.overlayEntry!.remove(); + } catch (e) { + + } noticeCallback(); // logic.setLike(); @@ -172,10 +178,16 @@ void showFloatingButtonOverlay( countdownSeconds--; // overlayEntry.markNeedsBuild(); // 刷新 OverlayEntry } else { - timer.cancel(); // 取消计时器 - overlayEntry.remove(); // 移除 OverlayEntry + timer.cancel(); + // 取消计时器 + + try { + OverlayClass.overlayEntry!.remove(); + } catch (e) { + + } } }); // 将 OverlayEntry 添加到 Overlay 中 - overlayState?.insert(overlayEntry); + overlayState?.insert(OverlayClass.overlayEntry!); } diff --git a/circle_app/pubspec.lock b/circle_app/pubspec.lock index 0e83aa2..c71ea3a 100644 --- a/circle_app/pubspec.lock +++ b/circle_app/pubspec.lock @@ -606,6 +606,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.1.3" + flutter_install_app: + dependency: "direct main" + description: + name: flutter_install_app + sha256: "9b117006d17c900e671c26bcbc9b15c7b8efd15d6f9b4442ad5d576de20fab53" + url: "https://pub.dev" + 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 bc595dc..d5e1e71 100644 --- a/circle_app/pubspec.yaml +++ b/circle_app/pubspec.yaml @@ -93,7 +93,7 @@ dependencies: #event_bus: event_bus: ^2.0.0 #安装apk -# flutter_install_app: 1.3.0 + flutter_install_app: 1.3.0 #闪屏页 flutter_native_splash: 2.2.16 #腾讯离线推送