This commit is contained in:
CYH 2023-07-18 16:00:00 +08:00
parent 46831e4b2a
commit 4d33af7c0a
34 changed files with 627 additions and 50 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 464 KiB

View File

@ -1,5 +1,5 @@
# Uncomment this line to define a global platform for your project
# platform :ios, '11.0'
platform :ios, '12.0'
# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
ENV['COCOAPODS_DISABLE_STATS'] = 'true'

View File

@ -3,6 +3,9 @@ PODS:
- Flutter
- camera_avfoundation (0.0.1):
- Flutter
- connectivity (0.0.1):
- Flutter
- Reachability
- device_info (0.0.1):
- Flutter
- device_info_plus (0.0.1):
@ -56,9 +59,14 @@ PODS:
- fluttertoast (0.0.2):
- Flutter
- Toast
- fluwx (0.0.1):
- Flutter
- WechatOpenSDK-XCFramework (~> 2.0.2)
- FMDB (2.7.5):
- FMDB/standard (= 2.7.5)
- FMDB/standard (2.7.5)
- geolocator_apple (1.2.0):
- Flutter
- HydraAsync (2.0.6)
- image_gallery_saver (1.5.0):
- Flutter
@ -83,11 +91,12 @@ PODS:
- path_provider_foundation (0.0.1):
- Flutter
- FlutterMacOS
- permission_handler_apple (9.1.0):
- permission_handler_apple (9.1.1):
- Flutter
- photo_manager (2.0.0):
- Flutter
- FlutterMacOS
- Reachability (3.2)
- ReactiveObjC (3.1.1)
- SDWebImage (5.16.0):
- SDWebImage/Core (= 5.16.0)
@ -108,35 +117,42 @@ PODS:
- TXIMSDK_Plus_iOS (>= 7.2.4146)
- tencent_cloud_uikit_core (0.0.1):
- Flutter
- TUICore (~> 7.2.4123)
- TUICore (~> 7.3.4358)
- tencent_open_file (0.0.1):
- Flutter
- Toast (4.0.0)
- TUICore (7.2.4146):
- TUICore (7.3.4358):
- ReactiveObjC
- SDWebImage
- TUICore/ImSDK_Plus (= 7.2.4146)
- TUICore/Base (7.2.4146):
- TUICore/ImSDK_Plus (= 7.3.4358)
- TUICore/Base (7.3.4358):
- ReactiveObjC
- SDWebImage
- TUICore/ImSDK_Plus (7.2.4146):
- TUICore/ImSDK_Plus (7.3.4358):
- ReactiveObjC
- SDWebImage
- TUICore/Base
- TXIMSDK_Plus_iOS (= 7.2.4146)
- TXIMSDK_Plus_iOS (7.2.4146)
- TXIMSDK_Plus_iOS (= 7.3.4358)
- TXIMSDK_Plus_iOS (7.3.4358)
- url_launcher_ios (0.0.1):
- Flutter
- video_compress (0.3.0):
- Flutter
- video_player_avfoundation (0.0.1):
- Flutter
- video_thumbnail (0.0.1):
- Flutter
- libwebp
- wakelock (0.0.1):
- Flutter
- webview_flutter_wkwebview (0.0.1):
- Flutter
- WechatOpenSDK-XCFramework (2.0.2)
DEPENDENCIES:
- audioplayers_darwin (from `.symlinks/plugins/audioplayers_darwin/ios`)
- camera_avfoundation (from `.symlinks/plugins/camera_avfoundation/ios`)
- connectivity (from `.symlinks/plugins/connectivity/ios`)
- device_info (from `.symlinks/plugins/device_info/ios`)
- device_info_plus (from `.symlinks/plugins/device_info_plus/ios`)
- disk_space (from `.symlinks/plugins/disk_space/ios`)
@ -146,6 +162,8 @@ DEPENDENCIES:
- flutter_image_compress (from `.symlinks/plugins/flutter_image_compress/ios`)
- flutter_plugin_record_plus (from `.symlinks/plugins/flutter_plugin_record_plus/ios`)
- fluttertoast (from `.symlinks/plugins/fluttertoast/ios`)
- fluwx (from `.symlinks/plugins/fluwx/ios`)
- geolocator_apple (from `.symlinks/plugins/geolocator_apple/ios`)
- image_gallery_saver (from `.symlinks/plugins/image_gallery_saver/ios`)
- image_picker_ios (from `.symlinks/plugins/image_picker_ios/ios`)
- package_info_plus (from `.symlinks/plugins/package_info_plus/ios`)
@ -159,7 +177,9 @@ DEPENDENCIES:
- tencent_cloud_uikit_core (from `.symlinks/plugins/tencent_cloud_uikit_core/ios`)
- tencent_open_file (from `.symlinks/plugins/tencent_open_file/ios`)
- url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`)
- video_compress (from `.symlinks/plugins/video_compress/ios`)
- video_player_avfoundation (from `.symlinks/plugins/video_player_avfoundation/ios`)
- video_thumbnail (from `.symlinks/plugins/video_thumbnail/ios`)
- wakelock (from `.symlinks/plugins/wakelock/ios`)
- webview_flutter_wkwebview (from `.symlinks/plugins/webview_flutter_wkwebview/ios`)
@ -171,6 +191,7 @@ SPEC REPOS:
- HydraAsync
- libwebp
- Mantle
- Reachability
- ReactiveObjC
- SDWebImage
- SDWebImageWebPCoder
@ -178,12 +199,15 @@ SPEC REPOS:
- Toast
- TUICore
- TXIMSDK_Plus_iOS
- WechatOpenSDK-XCFramework
EXTERNAL SOURCES:
audioplayers_darwin:
:path: ".symlinks/plugins/audioplayers_darwin/ios"
camera_avfoundation:
:path: ".symlinks/plugins/camera_avfoundation/ios"
connectivity:
:path: ".symlinks/plugins/connectivity/ios"
device_info:
:path: ".symlinks/plugins/device_info/ios"
device_info_plus:
@ -202,6 +226,10 @@ EXTERNAL SOURCES:
:path: ".symlinks/plugins/flutter_plugin_record_plus/ios"
fluttertoast:
:path: ".symlinks/plugins/fluttertoast/ios"
fluwx:
:path: ".symlinks/plugins/fluwx/ios"
geolocator_apple:
:path: ".symlinks/plugins/geolocator_apple/ios"
image_gallery_saver:
:path: ".symlinks/plugins/image_gallery_saver/ios"
image_picker_ios:
@ -228,8 +256,12 @@ EXTERNAL SOURCES:
:path: ".symlinks/plugins/tencent_open_file/ios"
url_launcher_ios:
:path: ".symlinks/plugins/url_launcher_ios/ios"
video_compress:
:path: ".symlinks/plugins/video_compress/ios"
video_player_avfoundation:
:path: ".symlinks/plugins/video_player_avfoundation/ios"
video_thumbnail:
:path: ".symlinks/plugins/video_thumbnail/ios"
wakelock:
:path: ".symlinks/plugins/wakelock/ios"
webview_flutter_wkwebview:
@ -238,6 +270,7 @@ EXTERNAL SOURCES:
SPEC CHECKSUMS:
audioplayers_darwin: 877d9a4d06331c5c374595e46e16453ac7eafa40
camera_avfoundation: 3125e8cd1a4387f6f31c6c63abb8a55892a9eeeb
connectivity: c4130b2985d4ef6fd26f9702e886bd5260681467
device_info: d7d233b645a32c40dfdc212de5cf646ca482f175
device_info_plus: e5c5da33f982a436e103237c0c85f9031142abed
disk_space: e94d34bbdf77954adfb39e60bde9cc5c7233eda6
@ -249,7 +282,9 @@ SPEC CHECKSUMS:
flutter_image_compress: 5a5e9aee05b6553048b8df1c3bc456d0afaac433
flutter_plugin_record_plus: 79b8e13ee7ed9a94f6c067018653599528cee1fc
fluttertoast: fafc4fa4d01a6a9e4f772ecd190ffa525e9e2d9c
fluwx: e9e728cfdb80e82dac5f4ff974b1901a7939dcd0
FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a
geolocator_apple: cc556e6844d508c95df1e87e3ea6fa4e58c50401
HydraAsync: 8d589bd725b0224f899afafc9a396327405f8063
image_gallery_saver: 259eab68fb271cfd57d599904f7acdc7832e7ef2
image_picker_ios: 4a8aadfbb6dc30ad5141a2ce3832af9214a705b5
@ -257,26 +292,30 @@ SPEC CHECKSUMS:
Mantle: c5aa8794a29a022dfbbfc9799af95f477a69b62d
package_info_plus: 6c92f08e1f853dc01228d6f553146438dafcd14e
pasteboard: 982969ebaa7c78af3e6cc7761e8f5e77565d9ce0
path_provider_foundation: eaf5b3e458fc0e5fbb9940fb09980e853fe058b8
permission_handler_apple: 8f116445eff3c0e7c65ad60f5fef5490aa94b4e4
path_provider_foundation: 29f094ae23ebbca9d3d0cec13889cd9060c0e943
permission_handler_apple: e76247795d700c14ea09e3a2d8855d41ee80a2e6
photo_manager: 4f6810b7dfc4feb03b461ac1a70dacf91fba7604
Reachability: 33e18b67625424e47b6cde6d202dce689ad7af96
ReactiveObjC: 011caa393aa0383245f2dcf9bf02e86b80b36040
SDWebImage: 2aea163b50bfcb569a2726b6a754c54a4506fcf6
SDWebImageWebPCoder: f0f287cee4cd96a59937fbf3c77a8cfda9ba67b0
shared_preferences_foundation: e2dae3258e06f44cc55f49d42024fd8dd03c590c
shared_preferences_foundation: 5b919d13b803cadd15ed2dc053125c68730e5126
sqflite: 31f7eba61e3074736dff8807a9b41581e4f7f15a
SwiftyGif: 93a1cc87bf3a51916001cf8f3d63835fb64c819f
tencent_cloud_chat_sdk: 8a2bceccaf81e7f922e7b6509ab93c39c3884dda
tencent_cloud_uikit_core: d9ec9de7506192ad4af806eab14f2f6d6dd35b01
tencent_cloud_uikit_core: c8f580dffd1be47b5e5514b1dd8ba35506c4a560
tencent_open_file: 1261db508715b8f43ef3b7e31c90824838038165
Toast: 91b396c56ee72a5790816f40d3a94dd357abc196
TUICore: 4133d303a749d5c29aa1f7e03f5d787855b2c4e9
TXIMSDK_Plus_iOS: 560464285b93add271d5fd7a2a26434293821c11
TUICore: b0e525287eb03f95fe648a696c9ffb253fc87098
TXIMSDK_Plus_iOS: bc72c7cec1b5e975c3cc6629692c849513a932f5
url_launcher_ios: 08a3dfac5fb39e8759aeb0abbd5d9480f30fc8b4
video_compress: fce97e4fb1dfd88175aa07d2ffc8a2f297f87fbe
video_player_avfoundation: 81e49bb3d9fb63dccf9fa0f6d877dc3ddbeac126
video_thumbnail: c4e2a3c539e247d4de13cd545344fd2d26ffafd1
wakelock: d0fc7c864128eac40eba1617cb5264d9c940b46f
webview_flutter_wkwebview: 2e2d318f21a5e036e2c3f26171342e95908bd60a
WechatOpenSDK-XCFramework: acdeeda129efbef9532bca8a10c24e1b4b8c7d69
PODFILE CHECKSUM: 9f3fe3e871b4a811f0f2f55cc60906d65b3d629e
PODFILE CHECKSUM: 09e094488be8e69887949b64bfbb08a8be3d1fc1
COCOAPODS: 1.11.3

View File

@ -360,6 +360,7 @@
DEVELOPMENT_TEAM = C97QBVP4DP;
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
@ -494,6 +495,7 @@
DEVELOPMENT_TEAM = C97QBVP4DP;
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
@ -522,6 +524,7 @@
DEVELOPMENT_TEAM = C97QBVP4DP;
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",

View File

@ -2,6 +2,8 @@
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>App Transport Security Settings </key>
<true/>
<key>NSLocationWhenInUseUsageDescription</key>
<string>应用想要访问您的位置,用于设置个人资料</string>
<key>NSLocationAlwaysUsageDescription</key>

View File

@ -1,4 +1,6 @@
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_install_app/flutter_install_app.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:get/get.dart';
@ -40,7 +42,7 @@ class AboutappLogic extends GetxController {
// SmartDialog.dismiss();
// print(error);
// });
await AppInstaller.installApk(filePath, actionRequired: false);
// await AppInstaller.installApk(filePath, actionRequired: false);
}

View File

@ -1,3 +1,4 @@
import 'package:circle_app/main.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';

View File

@ -36,6 +36,7 @@ class BlacklistPage extends StatelessWidget {
controller: logic.refreshController,
onRefresh: _onRefresh,
onLoading: _onLoading,
enablePullUp: true,
child: ListView.builder(
itemCount: logic.lists.length,

View File

@ -3,9 +3,12 @@ import 'dart:math';
import 'package:circle_app/app/chat/TIMUIKitChat/TIMUIKitMessageItem/tim_uikit_chat_text_elem.dart';
import 'package:circle_app/app/chat/TIMUIKitChat/TIMUIKitMessageItem/tim_uikit_merger_message_elem.dart';
import 'package:circle_app/util/util.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import 'package:loading_animation_widget/loading_animation_widget.dart';
import 'package:provider/provider.dart';
import 'package:tencent_cloud_chat_uikit/data_services/core/tim_uikit_wide_modal_operation_key.dart';
@ -396,6 +399,68 @@ class _TIMUIKItHistoryMessageListItemState
() => model.jumpMsgID = "",
)!;
}
if (messageItem.customElem?.extension?.contains('cardData') ?? false) {
Map info = jsonDecode(messageItem.customElem?.data ?? '');
return Container(
height: info.containsKey('city') ? 175 : 140,
width: Get.width,
margin: EdgeInsets.only(left: 20),
decoration: BoxDecoration(
image: DecorationImage(
fit: BoxFit.fill,
image: AssetImage(
getCircleImage('pic_bg'),
))),
child: Column(
children: [
Container(
padding: EdgeInsets.only(left: 12,right: 12),
// height: 60,
child: Column(
children: [
if (info.containsKey('city'))
Container(
margin: EdgeInsets.only(top: 10),
child: Row(
children: [
Container(
margin: EdgeInsets.only(right: 5),width: 3,height: 3,decoration: BoxDecoration(borderRadius: BorderRadius.circular(1.5),color: Color(0xFF00FFF4)),),
Text(info['city'],style: TextStyle(color: Colors.white,fontSize: 14,fontWeight: FontWeight.w500),)
],
),
),
if (info.containsKey('both_interests'))
Container(
margin: EdgeInsets.only(top: 16),
child: Row(
children: [
Container(
margin: EdgeInsets.only(right: 5),width: 3,height: 3,decoration: BoxDecoration(borderRadius: BorderRadius.circular(1.5),color: Color(0xFF00FFF4)),),
Text(info['both_interests'],style: TextStyle(color: Colors.white,fontSize: 14,fontWeight: FontWeight.w500),)
],
),
),
Container(
margin: EdgeInsets.only(top: 10,bottom: 10),
alignment: Alignment.centerLeft,
child: Text(isFromSelf ? info['user']['signature'] : info['my']['signature'],style: TextStyle(color: Colors.white,fontSize: 14,fontWeight: FontWeight.w500),maxLines: 2,overflow: TextOverflow.ellipsis,),
),
Image.asset(
getCircleImage('line'),
width: Get.width,
fit: BoxFit.fill,
),
interestWdiget(isFromSelf ? info['interests'] : info['myInterests'])
],
),
)
],
),
);
}
return TIMUIKitCustomElem(
message: messageItem,
customElem: messageItem.customElem,
@ -580,6 +645,58 @@ class _TIMUIKItHistoryMessageListItemState
}
}
interestWdiget(List data) {
return Container(
// color: Colors.red,
alignment: Alignment.centerLeft,
height: 49.sp,
width: Get.width,
child: ListView.builder(
scrollDirection: Axis.horizontal,
itemCount: data.length,
padding: EdgeInsets.symmetric(vertical: 11.sp),
itemBuilder: (context, index) {
return Container(
margin: EdgeInsets.only(right: 11.sp), // item
child: Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(17.0), //
gradient: LinearGradient(
colors: [
Color(0xFF06F9FA),
Color(0xFFDC5BFD),
],
),
color: Color(0xFF392D53),
),
child: Container(
margin: EdgeInsets.all(0.5.sp),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(17.0),
// shape: BoxShape.circle,
color: Color(0xFF392D53),
),
child: Padding(
padding: EdgeInsets.only(
top: 2.sp, bottom: 2.sp, left: 15.sp, right: 15.sp),
child: Center(
child: Text(
data[index]['title'],
style: TextStyle(
fontSize: 11.0,
color: Colors.white,
),
),
),
),
),
), //
);
},
),
);
}
Widget _groupTipsMessageBuilder(TUIChatSeparateViewModel model) {
final messageItem = widget.message;
return Container(
@ -1233,12 +1350,16 @@ class _TIMUIKItHistoryMessageListItemState
}
}
},
child: Row(
child:
(message.customElem?.extension?.contains('cardData') ?? false) ? _getMessageItemBuilder(message, 1, model) : Row(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: isSelf
? MainAxisAlignment.end
: MainAxisAlignment.start,
children: [
if (!isSelf && widget.showAvatar)
InkWell(
onLongPress: () {
@ -1321,7 +1442,7 @@ class _TIMUIKItHistoryMessageListItemState
Row(
crossAxisAlignment: CrossAxisAlignment.end,
children: [
if (isSelf)
if (isSelf && message.elemType != 2)
renderHoverTipAndReadStatus(model, isSelf,
message, isPeerRead, theme),
Container(
@ -1408,7 +1529,7 @@ class _TIMUIKItHistoryMessageListItemState
left: 5, bottom: 12),
child: Icon(Icons.circle,
color: theme.cautionColor, size: 10)),
if (!isSelf)
if (!isSelf && message.elemType != 2)
renderHoverTipAndReadStatus(model, isSelf,
message, isPeerRead, theme),
],
@ -1426,7 +1547,7 @@ class _TIMUIKItHistoryMessageListItemState
size: 20,
),
),
if (isSelf && widget.showAvatar)
if (isSelf && widget.showAvatar && message.elemType != 2)
widget.userAvatarBuilder != null
? widget.userAvatarBuilder!(context, message)
: SizedBox(

View File

@ -364,7 +364,7 @@ class _TUIChatState extends TIMUIKitState<TIMChat> {
}
}
return bgWidget(context, GestureDetector(
return BgWidget(widget:GestureDetector(
onTap: () {
textFieldController.hideAllPanel();
},

View File

@ -1,6 +1,7 @@
import 'package:cached_network_image/cached_network_image.dart';
import 'package:circle_app/app/chat/TIMUIKitChat/tim_uikit_chat.dart';
import 'package:circle_app/components/my_app_bar.dart';
import 'package:circle_app/router/app_routers.dart';
import 'package:circle_app/util/util.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
@ -82,6 +83,9 @@ class ChatPage extends StatelessWidget {
customAppBar: MyAppBar(
centerTitle: logic.selectedConversation!.showName!,
actionWdiget: GestureDetector(
onTap: () {
Get.toNamed(AppRoutes.UserInfoActivity,arguments: logic.selectedConversation!.userID.toString().split('_').last);
},
child: Text('TA的主页',style: TextStyle(color: Color(0xFF00FFF4),fontSize:12.sp,fontWeight: FontWeight.w500),),
),
onPressed: () {},
@ -89,6 +93,7 @@ class ChatPage extends StatelessWidget {
userAvatarBuilder: (BuildContext context, V2TimMessage message) {
return avatarWidget(message.faceUrl ?? 'http://qiniuyun.ikuayou.com/avatar/default/default_header.png');
},
);
}

View File

@ -1,13 +1,14 @@
import 'package:circle_app/main.dart';
import 'package:circle_app/router/app_routers.dart';
import 'package:circle_app/util/util.dart';
import 'package:flutter/cupertino.dart';
import 'package:get/get.dart';
import '../../network/api.dart';
import '../../network/dio_manager.dart';
import 'state.dart';
class CircleLogic extends GetxController {
PageController pageController =
PageController(initialPage: 1, viewportFraction: 0.8);
InterestsBean circle = InterestsBean(lists: []);
@ -74,6 +75,20 @@ class CircleLogic extends GetxController {
Get.toNamed(AppRoutes.UserInfoActivity, arguments: userId);
}
void getPipeiData() async {
var data = await DioManager.instance
.get(url: Api.getMatch);
if(data['code'] == 200) {
//
bool isSuccess = await createCustomMsg(data['data']['account_id'].toString().split('_').last,data['data']['account_id']);
if (!isSuccess) {
await sendTextMsg(data['data']['account_id']);
}
} else {
showToast(data['msg']);
}
}
}

View File

@ -86,7 +86,7 @@ class _CirclePageState extends State<CirclePage>
List<MyConfigData> numbers = [];
numbers.add(MyConfigData(
logic.getCircleIndex().id.toString(),
logic.getCircleIndex().title,
logic.getCircleIndex().title!,
false));
var data = await Get.toNamed(AppRoutes.Call_out, arguments: {'numbers': numbers});
@ -371,7 +371,7 @@ class _CirclePageState extends State<CirclePage>
GestureDetector(
onTap: () {
Navigator.pop(context);
logic.outCircle(bean.id.toString(), bean.isJoin);
logic.outCircle(bean.id.toString(), bean.isJoin!);
},
child: Container(
margin: EdgeInsets.only(top: 24.sp),

View File

@ -176,7 +176,7 @@ class _InfoListViewState extends State<InfoListView> with AutomaticKeepAliveClie
var data = await DioManager.instance.get(
url: "/up-service/callout/${bean.id}/chat",);
if (data["code"] == 200) {
pushChatPage(data['data']['account_id'], bean.user!.nickname!);
pushChatPage(data['data']['account_id'],data['data']['account_id'], bean.user!.nickname!);
}
}

View File

@ -35,6 +35,7 @@ class FriendslistPage extends StatelessWidget {
controller: logic.refreshController,
onRefresh: _onRefresh,
onLoading: _onLoading,
enablePullUp: true,
child: ListView.builder(
padding: EdgeInsets.all(10.sp),
itemCount: logic.lists.length,

View File

@ -39,6 +39,7 @@ class LikelistPage extends StatelessWidget {
controller: logic.refreshController,
onRefresh: _onRefresh,
onLoading: _onLoading,
enablePullUp: true,
child: ListView.builder(
padding: EdgeInsets.all(10.sp),
itemCount: logic.lists.length,

View File

@ -1,6 +1,7 @@
// ignore_for_file: empty_catches
import 'package:cached_network_image/cached_network_image.dart';
import 'package:circle_app/app/msg/TIMUIKitConversation/tim_uikit_conversation_last_msg.dart';
import 'package:flutter/material.dart';
import 'package:tencent_cloud_chat_uikit/ui/utils/screen_utils.dart';
import 'package:tencent_cloud_chat_uikit/ui/views/TIMUIKitConversation/tim_uikit_conversation_item.dart';
@ -67,7 +68,7 @@ class TIMConversationItem extends TIMUIKitStatelessWidget {
lastMessageBuilder!(lastMsg, groupAtInfoList) != null) {
return lastMessageBuilder!(lastMsg, groupAtInfoList)!;
}
return TIMUIKitLastMsg(
return TIMLastMsg(
fontSize: isDesktopScreen ? 12 : 14,
groupAtInfoList: groupAtInfoList,
lastMsg: lastMsg,

View File

@ -9,13 +9,13 @@ import 'package:tencent_cloud_chat_uikit/ui/utils/message.dart';
import 'package:tencent_cloud_chat_uikit/base_widgets/tim_ui_kit_base.dart';
import 'package:tencent_im_base/tencent_im_base.dart';
class TIMUIKitLastMsg extends StatefulWidget {
class TIMLastMsg extends StatefulWidget {
final V2TimMessage? lastMsg;
final List<V2TimGroupAtInfo?> groupAtInfoList;
final BuildContext context;
final double fontSize;
const TIMUIKitLastMsg(
const TIMLastMsg(
{Key? key,
this.lastMsg,
required this.groupAtInfoList,
@ -24,10 +24,10 @@ class TIMUIKitLastMsg extends StatefulWidget {
: super(key: key);
@override
State<TIMUIKitLastMsg> createState() => _TIMUIKitLastMsgState();
State<TIMLastMsg> createState() => _TIMLastMsgState();
}
class _TIMUIKitLastMsgState extends TIMUIKitState<TIMUIKitLastMsg> {
class _TIMLastMsgState extends TIMUIKitState<TIMLastMsg> {
String groupTipsAbstractText = "";
@override
@ -37,7 +37,7 @@ class _TIMUIKitLastMsgState extends TIMUIKitState<TIMUIKitLastMsg> {
}
@override
void didUpdateWidget(covariant TIMUIKitLastMsg oldWidget) {
void didUpdateWidget(covariant TIMLastMsg oldWidget) {
super.didUpdateWidget(oldWidget);
if ((oldWidget.lastMsg?.msgID != widget.lastMsg?.msgID) ||
(oldWidget.lastMsg?.id != widget.lastMsg?.id)) {
@ -73,6 +73,11 @@ class _TIMUIKitLastMsgState extends TIMUIKitState<TIMUIKitLastMsg> {
final msgType = message!.elemType;
switch (msgType) {
case MessageElemType.V2TIM_ELEM_TYPE_CUSTOM:
{
if (message.customElem?.desc?.isNotEmpty ?? false) {
return message.customElem!.desc!;
}
}
return TIM_t("[自定义]");
case MessageElemType.V2TIM_ELEM_TYPE_SOUND:
return TIM_t("[语音]");

View File

@ -0,0 +1,10 @@
import 'package:get/get.dart';
import 'logic.dart';
class Sys_notify_listBinding extends Bindings {
@override
void dependencies() {
Get.lazyPut(() => Sys_notify_listLogic());
}
}

View File

@ -0,0 +1,115 @@
import 'package:circle_app/network/api.dart';
import 'package:circle_app/network/dio_manager.dart';
import 'package:get/get.dart';
import 'package:pull_to_refresh/pull_to_refresh.dart';
class Sys_notify_listLogic extends GetxController {
@override
void dispose() {
refreshController.dispose();
super.dispose();
}
final RefreshController refreshController = RefreshController();
int page = 0;
int isVip = 0;
bool isLoad = true;
List<Lists> lists = [];
@override
void onInit() async {
super.onInit();
initList();
}
initList() async {
if (page == 1) {
lists.clear();
update();
}
var data =
await DioManager.instance.get(url: Api.getNotices, params: {
'last_id':page > 0 ? page : '','size':'10'
});
// pagevar bean = BaseResponse<UserList>.fromJson(
// data, (data) => UserList.fromJson(data));
// if (bean.isSuccess()) {
// lists.addAll(bean.data.lists);
// }
List bean = data['data']['lists'];
if (bean.length > 0) {
bean.forEach((element) {
lists.add(Lists.fromJson(element));
});
}
isLoad = false;
update();
if (page == 0) {
page = lists.last.id!;
refreshController.refreshCompleted();
} else {
refreshController.loadComplete();
}
}
void onRefresh() async {
page = 0;
initList();
}
void onLoading() {
// page = page + 1;
initList();
}
}
class Lists {
String? content;
String? createTime;
int? id;
String? image;
String? note;
String? scene;
int? status;
String? title;
Lists(
{this.content,
this.createTime,
this.id,
this.image,
this.note,
this.scene,
this.status,
this.title});
Lists.fromJson(Map<String, dynamic> json) {
content = json['content'];
createTime = json['createTime'];
id = json['id'];
image = json['image'];
note = json['note'];
scene = json['scene'];
status = json['status'];
title = json['title'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['content'] = this.content;
data['createTime'] = this.createTime;
data['id'] = this.id;
data['image'] = this.image;
data['note'] = this.note;
data['scene'] = this.scene;
data['status'] = this.status;
data['title'] = this.title;
return data;
}
}

View File

@ -0,0 +1,142 @@
import 'package:cached_network_image/cached_network_image.dart';
import 'package:circle_app/components/my_app_bar.dart';
import 'package:circle_app/util/util.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import 'package:pull_to_refresh/pull_to_refresh.dart';
import 'package:tencent_cloud_chat_uikit/tencent_cloud_chat_uikit.dart';
import 'logic.dart';
class Sys_notify_listPage extends StatelessWidget {
Sys_notify_listPage({Key? key}) : super(key: key);
final logic = Get.find<Sys_notify_listLogic>();
Widget build(BuildContext context) {
return GetBuilder<Sys_notify_listLogic>(builder: (logic) {
return Container(
decoration: BoxDecoration(
image: DecorationImage(
image: AssetImage(getBaseImage("home_back")),
fit: BoxFit.cover,
),
),
child: Scaffold(
backgroundColor: Colors.transparent,
appBar: MyAppBar(
centerTitle: "系统通知",
),
body: Container(
width: Get.width,
height: Get.height,
child: SafeArea(
child: logic.isLoad
? loaddingWidget(true)
: logic.lists.isEmpty
? noResultWidget()
: SmartRefresher(
controller: logic.refreshController,
enablePullUp: true,
onRefresh: logic.onRefresh,
onLoading: () {
logic.onLoading();
},
child: ListView.builder(
padding: EdgeInsets.all(10.sp),
itemCount: logic.lists.length,
itemBuilder: (context, index) {
return ListItem(logic.lists[index]);
},
),
),
),
),
),
);
});
}
ListItem(Lists data) {
V2TimConversation con = Get.arguments;
List<Widget> widgets = [];
if (data.image != null) {
widgets.add(Image.network(
data.image!,
width: 267,
height: 114.sp,
fit: BoxFit.fill,
));
}
if (data.title?.isNotEmpty ?? false) {
widgets.add(Container(
margin: EdgeInsets.only(
top: 8.sp, left: 16.sp, right: 16.sp),
child: Text(
data.title!,
style: TextStyle(
color: Color(0xFFF7FAFA),
fontSize: 14.sp,
fontWeight: FontWeight.w500),
),
),);
}
if (data.content?.isNotEmpty ?? false) {
widgets.add(Container(
margin: EdgeInsets.only(
top: 10.sp, left: 16.sp, right: 16.sp,bottom: 10.sp),
child: Text(
data.content!,
style: TextStyle(
color: Color(0xFFF7FAFA),
fontSize: 14.sp,
fontWeight: FontWeight.w500),
),
));
}
return Container(
child: Column(
children: [
Container(
margin: EdgeInsets.only(bottom: 10.sp),
width: Get.width,
alignment: Alignment.center,
child: Text(
data.createTime ?? '',
style: TextStyle(
color: Color(0xFFB7BECC),
fontSize: 12.sp,
fontWeight: FontWeight.w500),
),
),
Row(
children: [
CachedNetworkImage(
imageUrl: con.faceUrl!,
width: 34.sp,
),
Column(
children: [
Container(
width: 267.sp,
margin: EdgeInsets.only(left: 10.sp),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10.sp),
color: Color(0xFF292836)),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children:widgets
),
)
],
)
],
)
],
),
);
}
}

View File

@ -113,6 +113,9 @@ class MsgPage extends StatelessWidget {
Positioned(
right: 0,
child: GestureDetector(
onTap: () {
logic.getPipeiData();
},
child: Image.asset(
getMsgImage('msg_pipei'),
width: 85.sp,
@ -248,6 +251,11 @@ class MsgPage extends StatelessWidget {
msgWdiget(context) {
return TIMConversation(
onTapItem: (selectedConv) {
String type = selectedConv.userID!.split('_')[2];
if (int.parse(type) == 11) {
Get.toNamed(AppRoutes.Sys_notify_list,arguments: selectedConv);
return;
}
Get.toNamed(AppRoutes.Chat,arguments: selectedConv);
},

View File

@ -0,0 +1,10 @@
import 'package:get/get.dart';
import 'logic.dart';
class Signal_circle_listBinding extends Bindings {
@override
void dependencies() {
Get.lazyPut(() => Signal_circle_listLogic());
}
}

View File

@ -0,0 +1,7 @@
import 'package:get/get.dart';
import 'state.dart';
class Signal_circle_listLogic extends GetxController {
final Signal_circle_listState state = Signal_circle_listState();
}

View File

@ -0,0 +1,5 @@
class Signal_circle_listState {
Signal_circle_listState() {
///Initialize variables
}
}

View File

@ -0,0 +1,57 @@
import 'package:circle_app/app/circle/logic.dart';
import 'package:circle_app/app/circle/widgets/info_list_view.dart';
import 'package:circle_app/components/my_app_bar.dart';
import 'package:circle_app/util/util.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'logic.dart';
class Signal_circle_listPage extends StatelessWidget {
Signal_circle_listPage({Key? key}) : super(key: key);
final logic = Get.find<Signal_circle_listLogic>();
final state = Get.find<Signal_circle_listLogic>().state;
@override
Widget build(BuildContext context) {
return Container(
width: MediaQuery.of(context).size.width,
height: MediaQuery.of(context).size.height,
decoration: BoxDecoration(
color: Color(0xFF423055),
image: DecorationImage(
fit: BoxFit.fill,
image: AssetImage(getBaseImage('home_back')))),
child: Scaffold(
backgroundColor: Colors.transparent,
body: SafeArea(
child: GetBuilder(builder: (Signal_circle_listLogic controller) {
return Stack(
children: [
Container(
width: MediaQuery.of(context).size.width,
height: MediaQuery.of(context).size.height,
child: Column(children: [
backNavigatorItem(),
// Text(controller.state.msg),
//使
// Expanded(
// child: InfoListView(0, Circle(id: Get.arguments['id']), controller));
]),
),
],
);
}),
),
));
}
backNavigatorItem() {
return MyAppBar(
centerTitle: Get.arguments['title'],
);
}
}

View File

@ -1,5 +1,6 @@
import 'package:cached_network_image/cached_network_image.dart';
import 'package:circle_app/app/chat/logic.dart';
import 'package:circle_app/app/userinfo/widgets/home_call_out.dart';
import 'package:circle_app/main.dart';
import 'package:flutter/material.dart';
@ -143,7 +144,13 @@ class _MyTabbedScreenState extends State<UserinfoPage>
final chatButton = GestureDetector(
onTap: () {
if (logic.userInfoBean != null) {
pushChatPage(logic.imId, logic.userInfoBean!.nickname);
final chatLogic = Get.find<ChatLogic>();
if (chatLogic.selectedConversation!.userID == logic.imId) {
Get.back();
return;
}
pushChatPage(logic.userInfoBean!.id.toString(),logic.imId, logic.userInfoBean!.nickname);
}
},
child: Container(

View File

@ -36,6 +36,7 @@ class VisitorlistPage extends StatelessWidget {
controller: logic.refreshController,
onRefresh: _onRefresh,
onLoading: _onLoading,
enablePullUp:true,
child: ListView.builder(
padding: EdgeInsets.all(10.sp),
itemCount: logic.lists.length,
@ -121,7 +122,7 @@ class VisitorlistPage extends StatelessWidget {
// Pla
Spacer(),
GestureDetector(onTap: (){
pushChatPage(item.accountId, item.user.nickname);
pushChatPage(item.user.id.toString(),item.accountId, item.user.nickname);
},

View File

@ -1,7 +1,13 @@
import 'package:circle_app/util/util.dart';
import 'package:flutter/cupertino.dart';
Widget bgWidget(BuildContext context, Widget widget) {
class BgWidget extends StatelessWidget {
Widget widget;
BgWidget({Key? key, required this.widget}) : super(key: key);
@override
Widget build(BuildContext context) {
return Container(
width: MediaQuery.of(context).size.width,
height: MediaQuery.of(context).size.height,
@ -11,3 +17,4 @@ Widget bgWidget(BuildContext context, Widget widget) {
child: widget,
);
}
}

View File

@ -219,4 +219,9 @@ class Api {
// /up-service/my/interests /up-service/interest/statistics
static const getMyCircleInterests = 'up-service/my/interests';
//
static const getMatch = 'msg-service/im/chat/match';
//
static const getNotices = 'msg-service/system/notices';
}

View File

@ -24,6 +24,8 @@ import 'package:circle_app/app/login/login/view.dart';
import 'package:circle_app/app/minefragment/binding.dart';
import 'package:circle_app/app/minefragment/view.dart';
import 'package:circle_app/app/msg/binding.dart';
import 'package:circle_app/app/msg/sys_notify_list/binding.dart';
import 'package:circle_app/app/msg/sys_notify_list/view.dart';
import 'package:circle_app/app/msg/view.dart';
import 'package:circle_app/app/my_circle/binding.dart';
import 'package:circle_app/app/my_circle/view.dart';
@ -193,5 +195,10 @@ class AppPages {
page: () => VisitorlistPage(),
binding: VisitorlistBinding(),
),
GetPage(
name: AppRoutes.Sys_notify_list,
page: () => Sys_notify_listPage(),
binding: Sys_notify_listBinding(),
),
];
}

View File

@ -27,4 +27,6 @@ abstract class AppRoutes {
static const MyCircle = '/myCircle';
static const MyFeedBackListActivity = '/mine/MyFeedBackListActivity';
static const Sys_notify_list = '/msg/Sys_notify_list';
}

View File

@ -143,7 +143,7 @@ String convertToTenThousand(int number) {
}
pushLoginPage() async {
logoutIM();
await logoutIM();
SharedPreferencesHelper.getInstance().then((sharedPreferences) {
String loginPhone = sharedPreferences.getString(SharedPreferencesHelper.LOGINPHONE);
print(loginPhone);

View File

@ -55,7 +55,7 @@ dependencies:
#七牛
qiniu_flutter_sdk: ^0.5.0
#内置游览器插件
webview_flutter: ^4.2.2
webview_flutter: ^4.2.0
#http
dio: ^5.0.0
#获取设备信息
@ -65,7 +65,7 @@ dependencies:
#集成腾讯IM包含UIKIT库
tencent_cloud_chat_uikit: ^2.0.0
#权限申请
permission_handler: ^10.3.0
permission_handler: any
#loading
flutter_smart_dialog: ^4.9.2
#获取位置信息
@ -84,8 +84,6 @@ dependencies:
video_compress: ^3.1.2
#图片缓存
cached_network_image: ^3.2.3
#安装apk
flutter_install_app: 1.3.0
#网络拦截
connectivity: ^3.0.6
# 支付宝SDK插件
@ -95,7 +93,6 @@ dependencies:
dev_dependencies:
flutter_test:
sdk: flutter