diff --git a/circle_app/android/app/build.gradle b/circle_app/android/app/build.gradle
index d077b20..e2c84c7 100644
--- a/circle_app/android/app/build.gradle
+++ b/circle_app/android/app/build.gradle
@@ -66,10 +66,10 @@ android {
targetSdkVersion flutter.targetSdkVersion
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
- ndk {
- abiFilters 'armeabi-v7a', 'arm64-v8a'
- ldLibs "log"
- }
+// ndk {
+// abiFilters 'armeabi-v7a', 'arm64-v8a'
+// ldLibs "log"
+// }
}
buildTypes {
diff --git a/circle_app/android/app/src/main/res/drawable-v21/launch_background.xml b/circle_app/android/app/src/main/res/drawable-v21/launch_background.xml
index b737d51..38f27aa 100644
--- a/circle_app/android/app/src/main/res/drawable-v21/launch_background.xml
+++ b/circle_app/android/app/src/main/res/drawable-v21/launch_background.xml
@@ -5,27 +5,27 @@
android:src="@mipmap/launch_back" />
-
-
-
-
-
-
-
-
-
+ -
+
+
-
-
-
-
-
-
-
-
-
+ -
+
+
@@ -40,15 +40,14 @@
-
-
-
-
-
-
-
+ -->
-
+ android:gravity="bottom|center_horizontal"
+ >
+
+
diff --git a/circle_app/android/app/src/main/res/mipmap-xxhdpi/icon_btn.png b/circle_app/android/app/src/main/res/mipmap-xxhdpi/icon_btn.png
new file mode 100644
index 0000000..1c52a83
Binary files /dev/null and b/circle_app/android/app/src/main/res/mipmap-xxhdpi/icon_btn.png differ
diff --git a/circle_app/android/app/src/main/res/mipmap-xxhdpi/icon_top.png b/circle_app/android/app/src/main/res/mipmap-xxhdpi/icon_top.png
new file mode 100644
index 0000000..c113758
Binary files /dev/null and b/circle_app/android/app/src/main/res/mipmap-xxhdpi/icon_top.png differ
diff --git a/circle_app/android/app/src/main/res/mipmap-xxhdpi/launch_back.webp b/circle_app/android/app/src/main/res/mipmap-xxhdpi/launch_back.webp
index 74b9021..60810aa 100644
Binary files a/circle_app/android/app/src/main/res/mipmap-xxhdpi/launch_back.webp and b/circle_app/android/app/src/main/res/mipmap-xxhdpi/launch_back.webp differ
diff --git a/circle_app/android/app/src/main/res/mipmap-xxhdpi/logo.png b/circle_app/android/app/src/main/res/mipmap-xxhdpi/logo.png
index 6dd4bba..a5abf1d 100644
Binary files a/circle_app/android/app/src/main/res/mipmap-xxhdpi/logo.png and b/circle_app/android/app/src/main/res/mipmap-xxhdpi/logo.png differ
diff --git a/circle_app/lib/app/call_out/view.dart b/circle_app/lib/app/call_out/view.dart
index 57ce01a..80713a1 100644
--- a/circle_app/lib/app/call_out/view.dart
+++ b/circle_app/lib/app/call_out/view.dart
@@ -706,7 +706,7 @@ class Call_outPage extends StatelessWidget {
// width: 339.sp,
// padding: EdgeInsets.only(left: 17.sp, right: 17.sp),
// child: Text(
- // '为打造纯净的社交环境,更好地服务大家,基于以下几方面考虑:1、平台升级为全天24小时人工审核,保证用户真实,避免骗子、酒托、虚假人士等扰乱平台 ;2、杜绝未入圈用户随意骚扰或影响已入圈的跨友;3、谢绝只会白嫖的猎奇人士。',
+ // '为打造纯净的社交环境,更好地服务大家,基于以下几方面考虑:1、平台升级为全天24小时人工审核,保证用户真实,避免骗子、酒托、虚假人士等扰乱平台 ;2、杜绝未入圈用户随意骚扰或影响已入圈的;3、谢绝只会白嫖的猎奇人士。',
// style: TextStyle(
// color: Color.fromRGBO(247, 250, 250, 0.8),
// fontSize: 12.sp)),
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 f04f63f..c0d3c45 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
@@ -8,6 +8,7 @@ import 'package:circle_app/network/dio_manager.dart';
import 'package:circle_app/util/util.dart';
import 'package:diff_match_patch/diff_match_patch.dart';
import 'package:tencent_cloud_chat_uikit/business_logic/view_models/tui_setting_model.dart';
+import 'package:tencent_cloud_chat_uikit/data_services/friendShip/friendship_services.dart';
import 'package:tencent_cloud_chat_uikit/ui/utils/screen_utils.dart';
import 'package:tencent_cloud_chat_uikit/ui/views/TIMUIKitChat/TIMUIKitTextField/tim_uikit_text_field_layout/narrow.dart';
import 'package:flutter/material.dart';
@@ -27,6 +28,8 @@ import 'package:tencent_cloud_chat_uikit/ui/views/TIMUIKitChat/TIMUIKitTextField
import 'package:tencent_cloud_chat_uikit/base_widgets/tim_ui_kit_base.dart';
import 'package:tencent_cloud_chat_uikit/ui/views/TIMUIKitChat/TIMUIKitTextField/tim_uikit_text_field_layout/wide.dart';
+import '../../../../util/eventBus.dart';
+
enum MuteStatus { none, me, all }
GlobalKey<_InputTextFieldState> myInputTextFieldState = GlobalKey();
@@ -257,8 +260,15 @@ class _InputTextFieldState extends TIMUIKitState {
return userList;
}
-
+bool isSendLoging = false;
onSubmitted() async {
+ if(isSendLoging){
+ return;
+ }
+ if (isBlack) {
+ showToast("您已将对方拉黑,请移除黑名单后在发送消息~");
+ return;
+ }
lastText = "";
String text = textEditingController.text.trim();
final convType = widget.conversationType;
@@ -302,6 +312,7 @@ class _InputTextFieldState extends TIMUIKitState {
}
if (text.isNotEmpty && text != zeroWidthSpace) {
+
if (widget.model.repliedMessage != null) {
MessageUtils.handleMessageError(
widget.model.sendReplyMessage(
@@ -317,14 +328,14 @@ class _InputTextFieldState extends TIMUIKitState {
convID: widget.conversationID,
atUserList: getUserIdFromMemberInfoMap());
} else {
- var data =
- await DioManager.instance.post(
- url: Api.shieldWordCheck, params: {'text': text, 'type': 2});
-
+ isSendLoging = true;
+ var data = await DioManager.instance
+ .post(url: Api.shieldWordCheck, params: {'text': text, 'type': 2});
+ isSendLoging = false;
if (data['data']['code'] == 10000) {
List words = data['data']['words'];
if (words.isNotEmpty) {
- for(int i = 0; i < words.length; i++) {
+ for (int i = 0; i < words.length; i++) {
text = text.replaceAll(words[i], '*');
}
}
@@ -625,6 +636,7 @@ class _InputTextFieldState extends TIMUIKitState {
@override
void initState() {
super.initState();
+
checkHintText();
if (PlatformUtils().isWeb || PlatformUtils().isDesktop) {
focusNode = FocusNode(
@@ -713,7 +725,40 @@ class _InputTextFieldState extends TIMUIKitState {
(appLocale == AppLocale.zhHans || appLocale == AppLocale.zhHant)
? 'zh'
: 'en';
+ if(null==commentBlackEvent){
+ commentBlackEvent = EventBusManager.on().listen((event) {
+ if(event.userId == widget.currentConversation.userID!){
+ isBlack = event.isBlack;
+ }
+ });
+ getBlack();
+ }
+
+
+
}
+ StreamSubscription? commentBlackEvent =null;
+ bool isBlack = false;
+
+ getBlack() async {
+ final FriendshipServices _friendshipServices =
+ serviceLocator();
+ List? blacklist = await _friendshipServices.getBlackList();
+ if (blacklist != null) {
+ isBlack = false;
+ blacklist.forEach((element) {
+ print(element.userProfile!.nickName.toString());
+ if (element.userID == widget.currentConversation.userID!) {
+ isBlack = true;
+ }
+ });
+ await Future.delayed(Duration(milliseconds: 500));
+ EventBusManager.fire(CommentBlackMoreEvent());
+ }
+ }
+
+
+
@override
void didUpdateWidget(TIMInputTextField oldWidget) {
@@ -726,6 +771,7 @@ class _InputTextFieldState extends TIMUIKitState {
textEditingController.clear();
}
}
+
}
@override
@@ -733,6 +779,12 @@ class _InputTextFieldState extends TIMUIKitState {
// handleSetDraftText();
widget.model.removeListener(onModelChanged);
focusNode.dispose();
+ if(null!=commentBlackEvent){
+ print("TIMInputTextField解绑");
+ EventBusManager.cancelSubscription(commentBlackEvent!);
+ }
+
+
super.dispose();
}
@@ -840,6 +892,7 @@ class _InputTextFieldState extends TIMUIKitState {
addStickerToText: addStickerToText,
customStickerPanel: widget.customStickerPanel,
forbiddenText: forbiddenText,
+
onChanged: (text) async {
if (widget.onChanged != null) {
widget.onChanged!(text);
@@ -849,6 +902,7 @@ class _InputTextFieldState extends TIMUIKitState {
},
backgroundColor: widget.backgroundColor,
morePanelConfig: widget.morePanelConfig,
+ userId: widget.currentConversation.userID!,
repliedMessage: value,
currentCursor: currentCursor,
hintText: hintText,
@@ -915,17 +969,12 @@ class _InputTextFieldState extends TIMUIKitState {
resetHiText(String text) async {
if (!hintText!.contains('说些什么吧~') && text.isNotEmpty) {
- if ((widget.currentConversation.lastMessage
- ?.customElem ??
- null) !=
+ if ((widget.currentConversation.lastMessage?.customElem ?? null) !=
null) {
- if (widget.currentConversation.lastMessage
- ?.customElem!.extension ==
+ if (widget.currentConversation.lastMessage?.customElem!.extension ==
'cardData') {
hintText = '说些什么吧~';
- setState(() {
-
- });
+ setState(() {});
}
} else {
var result = await TencentImSDKPlugin.v2TIMManager
@@ -936,16 +985,13 @@ class _InputTextFieldState extends TIMUIKitState {
lastMsgID: null,
);
- if (result.code == 0 &&
- (result.data?.isNotEmpty ?? false)) {
+ if (result.code == 0 && (result.data?.isNotEmpty ?? false)) {
V2TimMessage msg = result.data!.last!;
if (msg.customElem != null) {
if (msg.customElem!.extension == 'cardData') {
hintText = '说些什么吧~';
- setState(() {
-
- });
+ setState(() {});
}
}
}
@@ -962,9 +1008,7 @@ class _InputTextFieldState extends TIMUIKitState {
Map info = jsonDecode(
widget.currentConversation.lastMessage!.customElem!.data!);
hintText = info['guide_text'];
- setState(() {
-
- });
+ setState(() {});
}
} else if (widget.currentConversation.lastMessage == null) {
getConverstationLastInfo();
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 d72c12d..9283e2c 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
@@ -14,6 +14,7 @@ import 'package:tencent_cloud_chat_uikit/base_widgets/tim_ui_kit_state.dart';
import 'package:tencent_cloud_chat_uikit/business_logic/separate_models/tui_chat_separate_view_model.dart';
import 'package:tencent_cloud_chat_uikit/business_logic/view_models/tui_chat_global_model.dart';
import 'package:tencent_cloud_chat_uikit/business_logic/view_models/tui_setting_model.dart';
+import 'package:tencent_cloud_chat_uikit/data_services/friendShip/friendship_services.dart';
import 'package:tencent_cloud_chat_uikit/data_services/services_locatar.dart';
import 'package:tencent_cloud_chat_uikit/tencent_cloud_chat_uikit.dart';
import 'package:tencent_cloud_chat_uikit/ui/utils/message.dart';
@@ -26,6 +27,8 @@ import 'package:tencent_cloud_chat_uikit/ui/views/TIMUIKitChat/TIMUIKitTextField
import 'package:tencent_extended_text_field/extended_text_field.dart';
import 'package:tencent_keyboard_visibility/tencent_keyboard_visibility.dart';
+import '../../../../../util/eventBus.dart';
+
GlobalKey<_TIMTextFieldLayoutNarrowState> TIMnarrowTextFieldKey = GlobalKey();
class TIMTextFieldLayoutNarrow extends StatefulWidget {
@@ -72,6 +75,8 @@ class TIMTextFieldLayoutNarrow extends StatefulWidget {
/// hint text for textField widget
final String? hintText;
+ final String? userId;
+
final int? currentCursor;
final ValueChanged setCurrentCursor;
@@ -130,6 +135,7 @@ class TIMTextFieldLayoutNarrow extends StatefulWidget {
required this.showSendEmoji,
required this.showMorePanel,
this.hintText,
+ this.userId,
required this.customEmojiStickerList,
this.controller})
: super(key: key);
@@ -163,7 +169,45 @@ class _TIMTextFieldLayoutNarrowState
}
});
}
+ if(null==commentBlackEvent){
+ commentBlackEvent = EventBusManager.on().listen((event) {
+ if(event.userId == widget.userId){
+ isBlack = event.isBlack;
+ }
+ });
+ }
+
+ getBlack();
}
+ StreamSubscription? commentBlackEvent =null;
+ @override
+ void dispose() {
+ print("TIMTextFieldLayoutNarrow解绑");
+ if(null!=commentBlackEvent){
+ EventBusManager.cancelSubscription(commentBlackEvent!);
+ }
+
+
+ super.dispose();
+ }
+
+ bool isBlack = false;
+
+ getBlack() async {
+ final FriendshipServices _friendshipServices =
+ serviceLocator();
+ List? blacklist = await _friendshipServices.getBlackList();
+ if (blacklist != null) {
+ isBlack = false;
+ blacklist.forEach((element) {
+ print(element.userProfile!.nickName.toString());
+ if (element.userID == widget.userId) {
+ isBlack = true;
+ }
+ });
+ }
+ }
+
void setSendButton() {
final value = widget.textEditingController.text;
@@ -362,7 +406,7 @@ class _TIMTextFieldLayoutNarrowState
setKeyboardHeight ??= OptimizeUtils.debounce((height) {
settingModel.keyboardHeight = height;
}, const Duration(seconds: 1));
-
+ //
final debounceFunc = _debounce((value) {
if (isWebDevice() || isAndroidDevice()) {
if (value.isEmpty && showMoreButton != true) {
@@ -596,7 +640,7 @@ class _TIMTextFieldLayoutNarrowState
width: 10,
),
InkWell(
- onTap: () {
+ onTap: () async {
widget.onSubmitted();
if (showKeyboard) {
widget.focusNode.requestFocus();
@@ -624,6 +668,10 @@ class _TIMTextFieldLayoutNarrowState
children: [
GestureDetector(
onTap: () async {
+ if (isBlack) {
+ showToast("您已将对方拉黑,请移除黑名单后在发送消息~");
+ return;
+ }
showKeyboard = showSendSoundText;
if (showSendSoundText) {
widget.focusNode.requestFocus();
@@ -659,6 +707,10 @@ class _TIMTextFieldLayoutNarrowState
),
GestureDetector(
onTap: () {
+ if (isBlack) {
+ showToast("您已将对方拉黑,请移除黑名单后在发送消息~");
+ return;
+ }
getImageFile();
},
child:
@@ -666,6 +718,10 @@ class _TIMTextFieldLayoutNarrowState
),
GestureDetector(
onTap: () {
+ if (isBlack) {
+ showToast("您已将对方拉黑,请移除黑名单后在发送消息~");
+ return;
+ }
getTakeImageFile();
},
child: Image.asset(getMsgImage('take_photo'),
diff --git a/circle_app/lib/app/chat/view.dart b/circle_app/lib/app/chat/view.dart
index d535643..db7e7c7 100644
--- a/circle_app/lib/app/chat/view.dart
+++ b/circle_app/lib/app/chat/view.dart
@@ -36,6 +36,7 @@ class _ChatPageState extends State {
initEventBus();
}
+
initEventBus()async{
EventBusManager.on().listen((event) async{
V2TimValueCallback? sendMessageRes =
@@ -98,8 +99,11 @@ class _ChatPageState extends State {
return TIMChat(
conversation: Get.arguments,
customStickerPanel: renderCustomStickerPanel,
- onTapAvatar :(String userId,TapDownDetails tapDownDetails){
- Get.toNamed(AppRoutes.UserInfoActivity,arguments: userId.toString().split('_').last);
+ onTapAvatar :(String userId,TapDownDetails tapDownDetails)async{
+ var data = await Get.toNamed(AppRoutes.UserInfoActivity,arguments: userId.toString().split('_').last);
+ // setState(() {
+ //
+ // });
},
controller : _timuiKitChatController,
config: const TIMUIKitChatConfig(
@@ -122,8 +126,9 @@ class _ChatPageState extends State {
customAppBar:MyAppBar(
centerTitle: con.showName!,
actionWdiget: GestureDetector(
- onTap: () {
- Get.toNamed(AppRoutes.UserInfoActivity,arguments: con.userID.toString().split('_').last);
+ onTap: () async{
+ var data = await Get.toNamed(AppRoutes.UserInfoActivity,arguments: con.userID.toString().split('_').last);
+
},
child: Text('TA的主页',style: TextStyle(color: const Color(0xFF00FFF4),fontSize:12.sp,fontWeight: FontWeight.w500),),
),
@@ -131,7 +136,7 @@ class _ChatPageState extends State {
),
userAvatarBuilder: (BuildContext context, V2TimMessage message) {
- return avatarWidget((message.faceUrl?.isNotEmpty ?? false) ? message.faceUrl! : 'http://qiniuyun.ikuayou.com/avatar/default/default_header.png');
+ return avatarWidget((message.faceUrl?.isNotEmpty ?? false) ? message.faceUrl! : 'https://qiniuyun.leyuan666.com/quanzi/avatar/default.png');
},
);
diff --git a/circle_app/lib/app/circle/view.dart b/circle_app/lib/app/circle/view.dart
index 42ef597..d2df4bf 100644
--- a/circle_app/lib/app/circle/view.dart
+++ b/circle_app/lib/app/circle/view.dart
@@ -148,7 +148,7 @@ class _CirclePageState extends State
onTap: () {
Get.toNamed(AppRoutes.VisitorListActivity);
},
- child: Container(
+ child: SizedBox(
width: 30.sp * widgets.length,
height: 44.sp,
child: Stack(
@@ -207,7 +207,7 @@ class _CirclePageState extends State
url,
width: (width - 1).sp,
height: (width - 1).sp,
- fit: BoxFit.fill,
+ fit: BoxFit.cover,
),
) : Text(url,style: TextStyle(color: Color(0xffF756FF),fontSize: 12.sp),)
],
diff --git a/circle_app/lib/app/dialog/BaseDialog.dart b/circle_app/lib/app/dialog/BaseDialog.dart
new file mode 100644
index 0000000..4fc60e8
--- /dev/null
+++ b/circle_app/lib/app/dialog/BaseDialog.dart
@@ -0,0 +1,175 @@
+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_screenutil/flutter_screenutil.dart';
+import 'package:get/get.dart';
+import 'package:get/get_core/src/get_main.dart';
+import 'package:url_launcher/url_launcher.dart';
+
+import '../../main.dart';
+import '../../network/dio_manager.dart';
+import '../../util/util.dart';
+
+class BaseDialog extends StatefulWidget {
+ final bool isDismiss;
+
+ BaseDialog({required this.isDismiss});
+
+ @override
+ BaseDialogState createState() => BaseDialogState();
+}
+
+double myProgress = 0;
+
+class BaseDialogState extends State {
+ bool isDownload = false;
+
+ void incrementCounter() {}
+
+ void setDownloadUi() {
+ setState(() {
+ isDownload = true;
+ });
+ }
+
+ @override
+ Widget build(BuildContext context) {
+ return WillPopScope(
+ onWillPop: () async {
+ return widget.isDismiss;
+ },
+ child: Dialog(
+ backgroundColor: Colors.transparent,
+ child: Container(
+ height: 200.sp,
+ padding: const EdgeInsets.all(1.0),
+ child: Stack(
+ children: [
+ Container(
+ decoration: BoxDecoration(
+ shape: BoxShape.rectangle,
+ borderRadius: BorderRadius.circular(10.0),
+ gradient: const LinearGradient(
+ colors: [Color(0xFFDD3DF4), Color(0xFF30FFD9)],
+ begin: Alignment.topCenter,
+ end: Alignment.bottomCenter,
+ ),
+ ),
+ ),
+ Container(
+ margin: EdgeInsets.all(1.sp),
+ decoration: BoxDecoration(
+ shape: BoxShape.rectangle,
+ borderRadius: BorderRadius.circular(10.0),
+ gradient: const LinearGradient(
+ colors: [Color(0xFF4C3E5F), Color(0xFF324140)],
+ begin: Alignment.topCenter,
+ end: Alignment.bottomCenter,
+ ),
+ ),
+ ),
+ Container(
+ margin: EdgeInsets.only(top: 24.sp),
+ child: Column(
+ children: [
+ Center(
+ child: Text(
+ "提示",
+ style: TextStyle(color: Colors.white, fontSize: 16.sp),
+ ),
+ ),
+ SizedBox(
+ height: 85.sp,
+ child: ListView(
+ children: [
+ Container(
+ margin: EdgeInsets.only(
+ top: 36.sp, left: 14.sp, right: 14.sp),
+ alignment: Alignment.center,
+ child: Text(
+ "您已被对方拉进黑名单,去看看其他人吧~",
+ textAlign: TextAlign.center,
+ style: TextStyle(
+ color: const Color(0xCCF7FAFA),
+ fontSize: 16.sp),
+ ),
+ )
+ ],
+ ),
+ ),
+ isDownload
+ ? GestureDetector(
+ onTap: () async {
+ //incrementCounter();
+ },
+ child: Container(
+ margin: EdgeInsets.only(top: 24.sp),
+ child: CircularProgressIndicator(
+ value: myProgress,
+ backgroundColor: Colors.grey,
+ valueColor: const AlwaysStoppedAnimation(
+ Color(0xFF30FFD9)),
+ strokeWidth: 4.0.sp,
+ ),
+ ),
+ )
+ : GestureDetector(
+ behavior: HitTestBehavior.opaque,
+ onTap: () async {
+ Navigator.pop(context);
+ Get.back();
+ },
+ child: Container(
+ width: 200.sp,
+ 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.only(
+ top: 10.sp,
+ bottom: 10.sp,
+ left: 52.sp,
+ right: 52.sp),
+ child: Center(
+ child: Text(
+ "好的",
+ style: TextStyle(
+ color: Colors.white,
+ fontSize: 12.sp,
+ ),
+ ),
+ ),
+ ),
+ )
+ ],
+ ),
+ ),
+ Positioned(
+ right: 8.sp,
+ top: 8.sp,
+ child: widget.isDismiss? GestureDetector(
+ onTap: (){
+
+ Navigator.pop(context);
+ },
+ child: Icon(Icons.close,color: Colors.white,size: 24.sp,)):Container())
+ ],
+ ),
+ ),
+ ),
+ );
+ }
+
+
+}
+
diff --git a/circle_app/lib/app/help/view.dart b/circle_app/lib/app/help/view.dart
index 5a518ba..745dcc1 100644
--- a/circle_app/lib/app/help/view.dart
+++ b/circle_app/lib/app/help/view.dart
@@ -1,8 +1,11 @@
+import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
+import 'package:tencent_cloud_chat_uikit/tencent_cloud_chat_uikit.dart';
import '../../components/my_app_bar.dart';
+import '../../main.dart';
import '../../router/app_routers.dart';
import '../../util/util.dart';
import 'logic.dart';
@@ -222,8 +225,20 @@ class HelpPage extends StatelessWidget {
borderRadius: BorderRadius.circular(20.sp),
),
child: TextButton.icon(
- onPressed: () {
- // Handle contact service button press
+ onPressed: () async{
+ var con;
+ if(kDebugMode){
+ con = V2TimConversation(
+ conversationID: "c2c_qpqz_dev_10_102", userID: "qpqz_dev_10_102", showName: "测试乐园客服", type: 1);
+ }else{
+ con = V2TimConversation(
+ conversationID: "c2c_qpqz_prod_10_102", userID: "qpqz_prod_10_102", showName: "乐园客服", type: 1);
+ }
+ Get.toNamed(AppRoutes.Chat, arguments: con);
+ // sendTextMsg('qpqz_dev_10_102',content :"你好吗? ");
+
+ // pushChatPage(logic.userInfoBean!.id.toString(), logic.imId,
+ // logic.userInfoBean!.nickname);
},
icon: Image.asset(
getMineImage("im_service"),
diff --git a/circle_app/lib/app/home/logic.dart b/circle_app/lib/app/home/logic.dart
index 2527932..d1e85f3 100644
--- a/circle_app/lib/app/home/logic.dart
+++ b/circle_app/lib/app/home/logic.dart
@@ -15,7 +15,6 @@ import '../msg/view.dart';
import 'state.dart';
class HomeLogic extends GetxController {
-
PageController pageController = PageController(initialPage: 1);
int currentIndex = 1;
Widget currentPage = Container();
@@ -36,7 +35,7 @@ class HomeLogic extends GetxController {
}
@override
- void onReady() async{
+ void onReady() async {
// TODO: implement onReady
super.onReady();
@@ -44,41 +43,37 @@ class HomeLogic extends GetxController {
var data = await DioManager.instance.get(url: Api.APP_VERSION);
var bean = BaseResponse.fromJson(
data, (data) => UpdateInfo.fromJson(data));
- if(bean.isSuccess()&&bean.data.update==1){
- // showReportDialog(Get.context!,bean.data.constraint==0,bean.data);
+ if (bean.isSuccess() && bean.data.update == 1) {
+ showReportDialog(Get.context!, bean.data.constraint == 0, bean.data);
}
-
-
-
-
}
- void showReportDialog(BuildContext context,bool isDismiss,UpdateInfo updateInfo) {
+ void showReportDialog(
+ BuildContext context, bool isDismiss, UpdateInfo updateInfo) {
showDialog(
- context: context,
- barrierDismissible: isDismiss,
- builder: (BuildContext context) {
- return UpdateDialog(isDismiss: isDismiss,updateInfo : updateInfo,);
- }
- );
+ context: context,
+ barrierDismissible: isDismiss,
+ builder: (BuildContext context) {
+ return UpdateDialog(
+ isDismiss: isDismiss,
+ updateInfo: updateInfo,
+ );
+ });
}
-
void getIMData() async {
// _coreInstance.;
if (!coreInstance.isLoginSuccess) {
- var data = await DioManager.instance
- .get(url: Api.getIMInfo);
+ var data = await DioManager.instance.get(url: Api.getIMInfo);
if (data['code'] == 200) {
- loginIM(data['data']['account_id'].toString(), data['data']['user_sig']);
+ loginIM(
+ data['data']['account_id'].toString(), data['data']['user_sig']);
}
}
-
}
- String getInfo () {
+ String getInfo() {
return getBaseImage('image');
-
}
updateIndex(int index) {
@@ -86,8 +81,7 @@ class HomeLogic extends GetxController {
if (index == 1) {
final logic = Get.put(CircleLogic());
logic.loadCirclePeopleData();
- }else
- if(index == 2){
+ } else if (index == 2) {
final logic = Get.put(MinefragmentLogic());
logic.getMode();
}
diff --git a/circle_app/lib/app/login/login/view.dart b/circle_app/lib/app/login/login/view.dart
index 81d9339..39b72be 100644
--- a/circle_app/lib/app/login/login/view.dart
+++ b/circle_app/lib/app/login/login/view.dart
@@ -173,12 +173,12 @@ class LoginPage extends StatelessWidget {
width: 76.sp,
height: 29.sp,
decoration: BoxDecoration(
- color:logic.isPhoto ? logic.sendCodeBtn? Colors.white30: Colors.transparent : Colors.white30,
+ color:logic.isPhoto ? logic.sendCodeBtn? Colors.white30:const Color(0xff0AFCFF) : Colors.white30,
borderRadius: BorderRadius.circular(
29.sp / 2)
),
child: Text(logic.sendCodeBtn ? '${logic.seconds}s' : '获取验证码', style: TextStyle(
- color: Colors.white, fontSize: 12.sp),),
+ color: logic.isPhoto ? logic.sendCodeBtn? Colors.white:Colors.black : Colors.white, fontSize: 12.sp),),
),
)),
diff --git a/circle_app/lib/app/msg/TIMUIKitConversation/tim_uikit_conversation_item.dart b/circle_app/lib/app/msg/TIMUIKitConversation/tim_uikit_conversation_item.dart
index 5368303..31e99e6 100644
--- a/circle_app/lib/app/msg/TIMUIKitConversation/tim_uikit_conversation_item.dart
+++ b/circle_app/lib/app/msg/TIMUIKitConversation/tim_uikit_conversation_item.dart
@@ -167,7 +167,7 @@ class TIMConversationItem extends TIMUIKitStatelessWidget {
children: [
ClipOval(
child: CachedNetworkImage(
- imageUrl: faceUrl==""?"http://qiniuyun.ikuayou.com/avatar/default/default_header.png":faceUrl,
+ imageUrl: faceUrl==""?"https://qiniuyun.leyuan666.com/quanzi/avatar/default.png":faceUrl,
fit: BoxFit.cover,
width: isDesktopScreen ? 40 : 44,
height: isDesktopScreen ? 40 : 44,
diff --git a/circle_app/lib/app/splash/logic.dart b/circle_app/lib/app/splash/logic.dart
index 74a2422..065165f 100644
--- a/circle_app/lib/app/splash/logic.dart
+++ b/circle_app/lib/app/splash/logic.dart
@@ -48,11 +48,16 @@ class SplashLogic extends GetxController {
});
Get.offNamed(AppRoutes.Complete_materialPage);
return;
+ } else if(bean.code == 5000||bean.code == 5001||bean.code == 5002||bean.code == 5003){
+ pushLoginPage();
+ return;
}
showToast(bean.msg.toString());
if (bean.code == 500) {
await Future.delayed(Duration(seconds: 5));
onInit();
+ }else {
+ pushLoginPage();
}
// Get.toNamed(AppRoutes.Home);
diff --git a/circle_app/lib/app/userinfo/logic.dart b/circle_app/lib/app/userinfo/logic.dart
index 19ca2bc..a72e623 100644
--- a/circle_app/lib/app/userinfo/logic.dart
+++ b/circle_app/lib/app/userinfo/logic.dart
@@ -1,15 +1,21 @@
import 'package:flutter/cupertino.dart';
+import 'package:flutter/material.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:get/get.dart';
import 'package:image_picker/image_picker.dart';
import 'package:shared_preferences/shared_preferences.dart';
+import 'package:tencent_cloud_chat_uikit/data_services/friendShip/friendship_services.dart';
+import 'package:tencent_cloud_chat_uikit/data_services/services_locatar.dart';
+import 'package:tencent_cloud_chat_uikit/tencent_cloud_chat_uikit.dart';
import '../../common/config.dart';
import '../../network/api.dart';
import '../../network/dio_manager.dart';
import '../../util/SharedPreferencesHelper.dart';
+import '../../util/eventBus.dart';
import '../../util/qiniu.dart';
import '../../util/util.dart';
+import '../dialog/BaseDialog.dart';
import 'state.dart';
class UserinfoLogic extends GetxController {
@@ -30,32 +36,56 @@ class UserinfoLogic extends GetxController {
bool isShowAlbum = true;
bool isLike = false;
+ bool isBlack = false;
+ bool isBlackBeen = false;
+ bool isDestroy = false;
final startTime = DateTime.now();
SharedPreferences? sharedPreferences;
+
@override
void onInit() async {
super.onInit();
SmartDialog.showLoading();
- sharedPreferences = await SharedPreferences.getInstance();
- int? sharedUserId = sharedPreferences!.getInt(SharedPreferencesHelper.USERID);
+ sharedPreferences = await SharedPreferences.getInstance();
+ int? sharedUserId =
+ sharedPreferences!.getInt(SharedPreferencesHelper.USERID);
- if (userId.isNotEmpty && sharedUserId != null && sharedUserId.toString() == userId) {
+ if (userId.isNotEmpty &&
+ sharedUserId != null &&
+ sharedUserId.toString() == userId) {
userId = '';
}
state.imaglist.clear();
if (userId.isEmpty) {
- fetchUserInfo(Api.getUserInfo);
- fetchMyAlbum(Api.getMyAlbum);
+ fetchUserInfo(Api.getUserInfo);
+ fetchMyAlbum(Api.getMyAlbum);
} else {
- fetchUserInfo("${Api.getUserInfoTA + userId}/home");
- fetchMyAlbum("${Api.getTaAlbum + userId}/albums");
- fetchUrgeStatus("${Api.getUrgeStatus + userId}/urge/album/status");
+ fetchUserInfo("${Api.getUserInfoTA + userId}/home");
+ fetchMyAlbum("${Api.getTaAlbum + userId}/albums");
+ fetchUrgeStatus("${Api.getUrgeStatus + userId}/urge/album/status");
+ fetchIsBlack("${Api.setBlock + userId}/block");
}
SmartDialog.dismiss();
- fetchQnToken(Api.getqiniuToken);
+ fetchQnToken(Api.getqiniuToken);
+ }
+
+ void showBlackDialog(BuildContext context) {
+ showDialog(
+ context: context,
+ barrierDismissible: false,
+ builder: (BuildContext context) {
+ return BaseDialog(
+ isDismiss: false,
+ );
+ });
+ }
+
+ Future fetchIsBlack(String url) async {
+ var data = await DioManager.instance.get(url: url);
+ isBlack = data["data"]["status"] == 1;
}
Future fetchUserInfo(String url) async {
@@ -66,22 +96,31 @@ class UserinfoLogic extends GetxController {
if (bean.isSuccess()) {
isMe = userId.isEmpty;
isLike = bean.data.isFollow;
- isLikeFoMsg = "${bean.data.imageUrgeCount}位圈友感兴趣,其中${bean.data.likeMeCount}位已催您更新";
+ isLikeFoMsg =
+ "${bean.data.likeMeCount}位圈友感兴趣,其中${bean.data.imageUrgeCount}位已催您更新";
userInfoBean = bean.data.user;
isVip = userInfoBean?.vip ?? 0;
imId = bean.data.accountId;
if (isMe) {
- isOnline = true;
- }else{
+ isOnline = true;
+ } else {
isOnline = userInfoBean!.isOnline;
+ isBlackBeen = bean.data.isBlock;
+ isDestroy = bean.data.isDestroy;
+ if(isBlackBeen){
+ showToast("您已被对方拉黑");
+ }
}
onLineCity = isOnline ? "在线" : "离线";
if (userInfoBean?.city != null) {
onLineCity = "$onLineCity·${userInfoBean!.city}";
- }else{
+ } else {
onLineCity = "$onLineCity·外星";
}
- ageMsg = getAgeCOntent(userInfoBean!.gender, userInfoBean!.age, userInfoBean!.role, userInfoBean!.orientation);
+ ageMsg = getAgeCOntent(userInfoBean!.gender, userInfoBean!.age,
+ userInfoBean!.role, userInfoBean!.orientation);
+ } else if (bean.code == 9999) {
+ showBlackDialog(Get.context!);
} else {
showToast(bean.msg);
}
@@ -104,7 +143,7 @@ class UserinfoLogic extends GetxController {
var urgeBean = BaseResponse.fromJson(
urgedata, (urgedata) => UrgentStatus.fromJson(urgedata));
isUrgeStatus = urgeBean.data?.isUrgent ?? false;
- update();
+ update();
}
Future fetchQnToken(String url) async {
@@ -114,10 +153,8 @@ class UserinfoLogic extends GetxController {
if (bean.isSuccess()) {
quToken = bean.data?.token.toString() ?? '';
}
-
}
-
urgeChange() async {
var data = await DioManager.instance
.post(url: "${Api.urgeAlbum + userId}/urge/album");
@@ -126,7 +163,7 @@ class UserinfoLogic extends GetxController {
showToast("催更成功");
isUrgeStatus = true;
update();
- }else {
+ } else {
showToast(bean.msg);
}
}
@@ -143,6 +180,11 @@ class UserinfoLogic extends GetxController {
}
setLike() async {
+ if(isBlack||isDestroy){
+ showToast("喜欢失败,存在拉黑关系或者该账户已注销");
+ return;
+ }
+
var data = await DioManager.instance.post(
url: "${Api.setLike + userId}/follow",
params: {'status': isLike ? "0" : "1"});
@@ -157,15 +199,40 @@ class UserinfoLogic extends GetxController {
showToast(bean.msg);
}
- setBlock() async {
- var data = await DioManager.instance
- .post(url: "${Api.setBlock + userId}/block", params: {'status': "1"});
+ setBlock(String status) async {
+ List parts = imId.split('_');
+ if (parts[2] == "10") {
+ showToast("不可拉黑客服号哦~");
+ return;
+ }
+ var data = await DioManager.instance.post(
+ url: "${Api.setBlock + userId}/block", params: {'status': status});
var bean = BaseResponse.fromJson(
data,
(jsonData) => jsonData,
);
if (bean.isSuccess()) {
- Navigator.pop(Get.context!);
+ final FriendshipServices _friendshipServices =
+ serviceLocator();
+
+ isBlack = status == "1";
+ try {
+ if (isBlack) {
+ Navigator.pop(Get.context!);
+ var result =
+ await _friendshipServices.addToBlackList(userIDList: [imId]);
+ print("拉黑成功" + result.toString());
+ } else {
+ var result =
+ await _friendshipServices.deleteFromBlackList(userIDList: [imId]);
+ print("取消拉黑成功" + result.toString());
+ }
+ // await Future.delayed(Duration(milliseconds: 500));
+ // Future.delayed(Duration(seconds: 3),() {
+ EventBusManager.fire(CommentBlackEvent(userId: imId, isBlack: isBlack));
+ // });
+ } catch (e) {}
+
update();
}
showToast(bean.msg);
@@ -189,10 +256,12 @@ class UserinfoLogic extends GetxController {
if (myAlbumBean.code == 200) {
SmartDialog.dismiss();
- state.imaglist.insert(0,AlbumListItem(
- id: myAlbumBean.data.id,
- type: myAlbumBean.data.type,
- url: result));
+ state.imaglist.insert(
+ 0,
+ AlbumListItem(
+ id: myAlbumBean.data.id,
+ type: myAlbumBean.data.type,
+ url: result));
update();
}
});
@@ -288,6 +357,8 @@ class ResponseBean {
int likeMeCount;
int imageUrgeCount;
bool isFollow;
+ bool isBlock;
+ bool isDestroy;
String accountId;
ResponseBean(
@@ -295,6 +366,8 @@ class ResponseBean {
required this.likeMeCount,
required this.imageUrgeCount,
required this.accountId,
+ required this.isBlock,
+ required this.isDestroy,
required this.isFollow});
factory ResponseBean.fromJson(Map json) {
@@ -303,6 +376,8 @@ class ResponseBean {
user: UserBean.fromJson(json['user']),
likeMeCount: json['like_me_count'],
imageUrgeCount: json['image_urge_count'],
+ isBlock: json['is_been_block'],
+ isDestroy: json['is_destroy'],
isFollow: json['is_follow'],
);
}
diff --git a/circle_app/lib/app/userinfo/view.dart b/circle_app/lib/app/userinfo/view.dart
index c36d9da..5db4d2c 100644
--- a/circle_app/lib/app/userinfo/view.dart
+++ b/circle_app/lib/app/userinfo/view.dart
@@ -94,11 +94,44 @@ class MyTabbedScreenState extends State
Widget _meInfoButton(UserinfoLogic controller) {
if (controller.isMe) {
- return const SizedBox();
+ return GestureDetector(
+ onTap: () async {
+ await Get.toNamed(
+ AppRoutes.Complete_materialPage,
+ arguments: "user",
+ );
+ logic.onInit();
+ },
+ child: Center(
+ child: Container(
+ 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(
+ "完善个人形象",
+ style: TextStyle(
+ color: Colors.white,
+ fontSize: 12,
+ ),
+ ),
+ ),
+ ));
} else {
final likeButton = GestureDetector(
onTap: () {
- _showBottomSheet(context);
+ _showBottomSheet(context, controller);
},
child: Image(
image: AssetImage(getMineImage("icon_like")),
@@ -137,9 +170,19 @@ class MyTabbedScreenState extends State
final chatButton = GestureDetector(
onTap: () {
+ if(logic.isBlack||logic.isDestroy||logic.isBlackBeen){
+ showToast("私聊失败,存在拉黑关系或者该账户已注销");
+ return;
+ }
+
if (logic.userInfoBean != null) {
- pushChatPage(logic.userInfoBean!.id.toString(), logic.imId,
- logic.userInfoBean!.nickname);
+ String msg = Get.previousRoute;
+ if (msg == AppRoutes.Chat) {
+ Get.back();
+ } else {
+ pushChatPage(logic.userInfoBean!.id.toString(), logic.imId,
+ logic.userInfoBean!.nickname);
+ }
}
},
child: Container(
@@ -204,7 +247,7 @@ class MyTabbedScreenState extends State
],
),
),
- Container(
+ Container(
padding: EdgeInsets.symmetric(
horizontal: 19.sp,
),
@@ -222,7 +265,7 @@ class MyTabbedScreenState extends State
),
),
SizedBox(width: 8.sp),
- _buildInfoRow(controller),
+ logic.isBlack||logic.isDestroy||logic.isBlackBeen?Container(): _buildInfoRow(controller),
],
),
Row(
@@ -238,7 +281,7 @@ class MyTabbedScreenState extends State
: const Color(0xFF787575),
),
),
- Text(
+ logic.isBlack||logic.isDestroy||logic.isBlackBeen?Container(): Text(
controller.onLineCity,
style: TextStyle(
fontSize: 12.sp,
@@ -254,7 +297,7 @@ class MyTabbedScreenState extends State
),
SizedBox(
height: 59.sp,
- child: _buildInterestsListView(interests),
+ child: logic.isBlack||logic.isDestroy||logic.isBlackBeen?Container(): _buildInterestsListView(interests),
),
titleTab(controller),
Expanded(
@@ -264,8 +307,8 @@ class MyTabbedScreenState extends State
_tabController.animateTo(index);
},
children: [
- _imageAdapter(controller),
- HomeCallOutView(controller.userId),
+ logic.isBlack||logic.isDestroy||logic.isBlackBeen?Container():_imageAdapter(controller),
+ logic.isBlack||logic.isDestroy||logic.isBlackBeen?Container(): HomeCallOutView(controller.userId),
],
),
),
@@ -360,7 +403,7 @@ class MyTabbedScreenState extends State
);
},
),
- GestureDetector(
+ logic.isBlack||logic.isDestroy||logic.isBlackBeen?Container(): GestureDetector(
onTap: () {
if (controller.isMe) {
controller.isEdit = !controller.isEdit;
@@ -410,35 +453,47 @@ class MyTabbedScreenState extends State
Widget _imageAdapter(UserinfoLogic controller) {
//print(controller.state.imaglist);
- return controller.state.imaglist.isEmpty
- ? Column(mainAxisAlignment: MainAxisAlignment.start, children: [
- const SizedBox(height: 100,),
- Image.asset(
- getBaseImage('no_result'),
- width: 200,
- // height: 11,
- ),
- const SizedBox(height: 26,),
- Text(
- controller.isMe?"点击管理即可上传形象照哦~":"TA还没有发布过形象照,快去催TA更新吧~",
- style: const TextStyle(color: Colors.white30),
- ),
- ])
- : Container(
- padding: EdgeInsets.symmetric(horizontal: 19.sp),
- child: Stack(
- children: [
- Column(
- children: [
- if (controller.isMe)
- Container(
- margin: EdgeInsets.only(top: 18.sp, bottom: 14.sp),
- child: Text(
- controller.isLikeFoMsg,
- style: const TextStyle(color: Colors.white30),
- ),
- ),
- Expanded(
+
+ // :
+ return Container(
+ padding: EdgeInsets.symmetric(horizontal: 19.sp),
+ child: Stack(
+ children: [
+ Column(
+ children: [
+ if (controller.isMe)
+ Container(
+ margin: EdgeInsets.only(top: 18.sp, bottom: 14.sp),
+ child: Text(
+ controller.isLikeFoMsg,
+ style: const TextStyle(color: Colors.white30),
+ ),
+ ),
+ controller.state.imaglist.isEmpty && !controller.isEdit
+ ? Center(
+ child: Column(
+ mainAxisAlignment: MainAxisAlignment.start,
+ children: [
+ const SizedBox(
+ height: 100,
+ ),
+ Image.asset(
+ getBaseImage('no_result'),
+ width: 200,
+ // height: 11,
+ ),
+ const SizedBox(
+ height: 26,
+ ),
+ Text(
+ controller.isMe
+ ? "点击管理即可上传形象照哦~"
+ : "TA还没有发布过形象照,快去催TA更新吧~",
+ style: const TextStyle(color: Colors.white30),
+ ),
+ ]),
+ )
+ : Expanded(
child: GridView.builder(
padding: const EdgeInsets.only(bottom: 58.0),
shrinkWrap: true,
@@ -497,52 +552,11 @@ class MyTabbedScreenState extends State
},
),
),
- ],
- ),
- if (logic.isMe)
- Positioned(
- left: 0,
- right: 0,
- bottom: 26.sp,
- child: GestureDetector(
- onTap: () async {
- await Get.toNamed(
- AppRoutes.Complete_materialPage,
- arguments: "user",
- );
- logic.onInit();
- },
- child: Center(
- child: Container(
- 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(
- "完善个人形象",
- style: TextStyle(
- color: Colors.white,
- fontSize: 12,
- ),
- ),
- ),
- ),
- ),
- ),
- ],
- ),
- );
+ ],
+ ),
+ ],
+ ),
+ );
}
Widget _buildInfoRow(UserinfoLogic controller) {
@@ -711,7 +725,7 @@ class MyTabbedScreenState extends State
);
}
- void _showBottomSheet(BuildContext context) {
+ void _showBottomSheet(BuildContext context, UserinfoLogic controller) {
showModalBottomSheet(
context: context,
backgroundColor: Colors.transparent,
@@ -762,8 +776,13 @@ class MyTabbedScreenState extends State
),
GestureDetector(
onTap: () {
- Navigator.pop(context);
- _showReportDialog(context);
+ if (controller.isBlack) {
+ logic.setBlock("0");
+ Navigator.pop(context);
+ } else {
+ Navigator.pop(context);
+ _showReportDialog(context);
+ }
},
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
@@ -775,8 +794,8 @@ class MyTabbedScreenState extends State
),
Container(
margin: EdgeInsets.only(top: 2.sp),
- child: const Text(
- "拉黑",
+ child: Text(
+ controller.isBlack ? "取消拉黑" : "拉黑",
style: TextStyle(color: Colors.white),
),
),
@@ -1031,7 +1050,7 @@ class MyTabbedScreenState extends State
SizedBox(width: 24.sp),
GestureDetector(
onTap: () {
- logic.setBlock();
+ logic.setBlock("1");
},
child: Container(
margin: EdgeInsets.only(top: 24.sp),
diff --git a/circle_app/lib/common/config.dart b/circle_app/lib/common/config.dart
index 3b165a3..39ac0a4 100644
--- a/circle_app/lib/common/config.dart
+++ b/circle_app/lib/common/config.dart
@@ -1,5 +1,5 @@
class CONFIG{
- static const IMAGE_HEAD = 'http://qiniuyun.ikuayou.com/';
+ static const IMAGE_HEAD = 'https://qiniuyun.leyuan666.com/';
static const CALL_OUT_VIDEO = 'call_out_video/';
diff --git a/circle_app/lib/main.dart b/circle_app/lib/main.dart
index 868a0d4..0137a60 100644
--- a/circle_app/lib/main.dart
+++ b/circle_app/lib/main.dart
@@ -17,6 +17,7 @@ import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:get/get.dart';
import 'package:tencent_cloud_chat_uikit/business_logic/separate_models/tui_chat_separate_view_model.dart';
+import 'package:tencent_cloud_chat_uikit/data_services/core/core_services.dart';
import 'package:tencent_cloud_chat_uikit/tencent_cloud_chat_uikit.dart';
import 'package:tencent_chat_push_for_china/model/appInfo.dart';
@@ -66,11 +67,11 @@ initPush() {
}
//跳转发消息页面
-pushChatPage(String userId, String imId, String userName) async {
+pushChatPage(String userId, String imId, String userName) {
var con = V2TimConversation(
conversationID: "c2c_$imId", userID: imId, showName: userName, type: 1);
- await createCustomMsg(userId, imId);
Get.toNamed(AppRoutes.Chat, arguments: con);
+ createCustomMsg(userId, imId);
}
createCustomMsg(String userId, String imId) async {
@@ -272,7 +273,7 @@ class _MyAppState extends State {
coreInstance.init(
sdkAppID: IM_SDK_APP_ID,
// Replace 0 with the SDKAppID of your IM application when integrating
- // language: LanguageEnum.en, // 界面语言配置,若不配置,则跟随系统语言
+ // language: LanguageEnum.zhHans, // 界面语言配置,若不配置,则跟随系统语言
loglevel: LogLevelEnum.V2TIM_LOG_DEBUG,
onTUIKitCallbackListener: (TIMCallback callbackValue) {
switch (callbackValue.type) {
@@ -282,6 +283,13 @@ class _MyAppState extends State {
break;
case TIMCallbackType.API_ERROR:
//Prints the API error to console, and shows the error message.
+ if(callbackValue.errorCode==20007){
+ showToast("您已被对方拉黑,换个人聊聊天吧~");
+ return;
+ }
+ if(callbackValue.errorCode==6015){
+ return;
+ }
print(
"Error from TUIKit: ${callbackValue.errorMsg}, Code: ${callbackValue.errorCode}");
if (callbackValue.errorCode == 10004 &&
diff --git a/circle_app/lib/network/api.dart b/circle_app/lib/network/api.dart
index 421157b..9a34947 100644
--- a/circle_app/lib/network/api.dart
+++ b/circle_app/lib/network/api.dart
@@ -1,7 +1,7 @@
import 'package:flutter/foundation.dart';
class Api {
- static const baseUrl = kDebugMode ? 'http://192.168.3.55:2000/' : 'http://192.168.3.55:2000/';
+ static const baseUrl = kDebugMode ? 'http://192.168.3.55:2000/' : 'https://leyuan666.com/zuul-service/';
// static const baseUrl = 'https://leyuan666.com/zuul-service/';
@@ -79,16 +79,35 @@ class Api {
static const getUserMine = 'user-service/my/main';
-
//个人信息
static const getUserInfo = 'user-service/my/home';
-
//他人信息
static const getUserInfoTA = 'user-service/user/';
+ //拉黑
+ static const setBlock = 'user-service/user/';
+
+
+ //喜欢
+ static const setLike = 'user-service/user/';
+
+
+ //注销账号
+ static const offAccount = 'user-service/user/destroy';
+
+
+ //绑定新手机号
+ static const bindingPhoto = 'user-service/user/phone';
+
+
+ //黑名单列表
+ static const blackList = 'user-service/blacklist/users';
+
+
+
//我的相册
static const getMyAlbum = 'up-service/my/albums';
@@ -117,13 +136,8 @@ class Api {
static const getUrgeStatus = 'up-service/user/';
- //拉黑
- static const setBlock = 'user-service/user/';
- //喜欢
- static const setLike = 'user-service/user/';
-
//关注列表
@@ -146,26 +160,11 @@ class Api {
- //注销账号
- static const offAccount = 'user-service/user/destroy';
- //黑名单列表
- static const blackList = 'user-service/blacklist/users';
-
-
-
-
-
- //绑定新手机号
- static const bindingPhoto = 'user-service/user/phone';
-
-
-
-
//意见反馈
static const getFeedBack = 'up-service/feedback';
diff --git a/circle_app/lib/util/eventBus.dart b/circle_app/lib/util/eventBus.dart
index 6d3dca0..ad14806 100644
--- a/circle_app/lib/util/eventBus.dart
+++ b/circle_app/lib/util/eventBus.dart
@@ -38,4 +38,13 @@ class SendCoustomMessage {
V2TimValueCallback? createCustomMessageRes = null;
-SendCoustomMessage(this.createCustomMessageRes);}
\ No newline at end of file
+SendCoustomMessage(this.createCustomMessageRes);
+}
+
+class CommentBlackEvent {
+ String userId = "";
+ bool isBlack = false;
+ CommentBlackEvent( {required this.userId,required this.isBlack });
+}
+class CommentBlackMoreEvent {
+}
\ No newline at end of file
diff --git a/circle_app/macos/Flutter/GeneratedPluginRegistrant.swift b/circle_app/macos/Flutter/GeneratedPluginRegistrant.swift
index 6ab1844..fe1d5d8 100644
--- a/circle_app/macos/Flutter/GeneratedPluginRegistrant.swift
+++ b/circle_app/macos/Flutter/GeneratedPluginRegistrant.swift
@@ -12,6 +12,7 @@ import device_info_plus_macos
import fc_native_video_thumbnail_for_us
import file_selector_macos
import geolocator_apple
+import local_notifications_for_us
import package_info_plus_macos
import pasteboard
import path_provider_foundation
@@ -30,6 +31,7 @@ func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
FcNativeVideoThumbnailPlugin.register(with: registry.registrar(forPlugin: "FcNativeVideoThumbnailPlugin"))
FileSelectorPlugin.register(with: registry.registrar(forPlugin: "FileSelectorPlugin"))
GeolocatorPlugin.register(with: registry.registrar(forPlugin: "GeolocatorPlugin"))
+ FlutterLocalNotificationsPlugin.register(with: registry.registrar(forPlugin: "FlutterLocalNotificationsPlugin"))
FLTPackageInfoPlusPlugin.register(with: registry.registrar(forPlugin: "FLTPackageInfoPlusPlugin"))
PasteboardPlugin.register(with: registry.registrar(forPlugin: "PasteboardPlugin"))
PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin"))
diff --git a/circle_app/pubspec.lock b/circle_app/pubspec.lock
index a27baaf..10fd45b 100644
--- a/circle_app/pubspec.lock
+++ b/circle_app/pubspec.lock
@@ -329,6 +329,14 @@ packages:
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.0.5"
+ dbus:
+ dependency: transitive
+ description:
+ name: dbus
+ sha256: "6f07cba3f7b3448d42d015bfd3d53fe12e5b36da2423f23838efc1d5fb31a263"
+ url: "https://pub.flutter-io.cn"
+ source: hosted
+ version: "0.7.8"
desktop_drop:
dependency: transitive
description:
@@ -433,6 +441,14 @@ packages:
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.0.0+3"
+ event_bus:
+ dependency: "direct main"
+ description:
+ name: event_bus
+ sha256: "44baa799834f4c803921873e7446a2add0f3efa45e101a054b1f0ab9b95f8edc"
+ url: "https://pub.flutter-io.cn"
+ source: hosted
+ version: "2.0.0"
extended_image:
dependency: transitive
description:
@@ -542,6 +558,14 @@ packages:
description: flutter
source: sdk
version: "0.0.0"
+ flutter_apns_only:
+ dependency: transitive
+ description:
+ name: flutter_apns_only
+ sha256: "70da0d520a5b8088dc7a52abb9a63d3191521c7ec2360461af776cdaee50ab74"
+ url: "https://pub.flutter-io.cn"
+ source: hosted
+ version: "1.6.0"
flutter_blurhash:
dependency: transitive
description:
@@ -598,6 +622,22 @@ packages:
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.0.1"
+ flutter_local_notifications_linux:
+ dependency: transitive
+ description:
+ name: flutter_local_notifications_linux
+ sha256: b472bfc173791b59ede323661eae20f7fff0b6908fea33dd720a6ef5d576bae8
+ url: "https://pub.flutter-io.cn"
+ source: hosted
+ version: "0.5.1"
+ flutter_local_notifications_platform_interface:
+ dependency: transitive
+ description:
+ name: flutter_local_notifications_platform_interface
+ sha256: "21bceee103a66a53b30ea9daf677f990e5b9e89b62f222e60dd241cd08d63d3a"
+ url: "https://pub.flutter-io.cn"
+ source: hosted
+ version: "5.0.0"
flutter_luban:
dependency: "direct main"
description:
@@ -614,6 +654,14 @@ packages:
url: "https://pub.flutter-io.cn"
source: hosted
version: "0.6.15"
+ flutter_native_splash:
+ dependency: "direct main"
+ description:
+ name: flutter_native_splash
+ sha256: "6777a3abb974021a39b5fdd2d46a03ca390e03903b6351f21d10e7ecc969f12d"
+ url: "https://pub.flutter-io.cn"
+ source: hosted
+ version: "2.2.16"
flutter_page_indicator:
dependency: transitive
description:
@@ -824,6 +872,14 @@ packages:
url: "https://pub.flutter-io.cn"
source: hosted
version: "4.0.2"
+ huawei_push:
+ dependency: transitive
+ description:
+ name: huawei_push
+ sha256: "71e84086f28eeab3bd4fef66f0cefad1adcb537a77ade154020af60c1dfe55fb"
+ url: "https://pub.flutter-io.cn"
+ source: hosted
+ version: "6.10.0+300"
image:
dependency: transitive
description:
@@ -952,6 +1008,14 @@ packages:
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.2.0+4"
+ local_notifications_for_us:
+ dependency: transitive
+ description:
+ name: local_notifications_for_us
+ sha256: "0453c3c8e021474d36bc1ccdae06688e7e1c6d3d62114e2f3c4eebd0e2f035d7"
+ url: "https://pub.flutter-io.cn"
+ source: hosted
+ version: "1.0.4"
logging:
dependency: transitive
description:
@@ -1216,6 +1280,14 @@ packages:
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.6.0"
+ plain_notification_token_for_us:
+ dependency: transitive
+ description:
+ name: plain_notification_token_for_us
+ sha256: ba4e5ff9b24abec39aad2d2d07fbfc02966b37fd5ae98ed9f8af20e4c4f906ad
+ url: "https://pub.flutter-io.cn"
+ source: hosted
+ version: "1.0.0+1"
platform:
dependency: transitive
description:
@@ -1461,6 +1533,14 @@ packages:
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.0.4"
+ tencent_chat_push_for_china:
+ dependency: "direct main"
+ description:
+ name: tencent_chat_push_for_china
+ sha256: "7877e18a229c93fd5fa9dcda5b37bea0e4f6ad29ec93ceaeb2bca9bb82d75480"
+ url: "https://pub.flutter-io.cn"
+ source: hosted
+ version: "2.6.2+1"
tencent_cloud_chat_sdk:
dependency: transitive
description:
@@ -1581,6 +1661,14 @@ packages:
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.0.1"
+ timezone:
+ dependency: transitive
+ description:
+ name: timezone
+ sha256: "1cfd8ddc2d1cfd836bc93e67b9be88c3adaeca6f40a00ca999104c30693cdca0"
+ url: "https://pub.flutter-io.cn"
+ source: hosted
+ version: "0.9.2"
transformer_page_view:
dependency: transitive
description:
@@ -1865,10 +1953,10 @@ packages:
dependency: transitive
description:
name: xdg_directories
- sha256: ee1505df1426458f7f60aac270645098d318a8b4766d85fde75f76f2e21807d1
+ sha256: bd512f03919aac5f1313eb8249f223bacf4927031bf60b02601f81f687689e86
url: "https://pub.flutter-io.cn"
source: hosted
- version: "1.0.0"
+ version: "0.2.0+3"
xml:
dependency: transitive
description: