修改IM
This commit is contained in:
parent
46831e4b2a
commit
4d33af7c0a
BIN
circle_app/assets/images/home/icon_vip_android.png
Normal file
BIN
circle_app/assets/images/home/icon_vip_android.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 464 KiB |
@ -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'
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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",
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -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';
|
||||
|
||||
@ -36,6 +36,7 @@ class BlacklistPage extends StatelessWidget {
|
||||
controller: logic.refreshController,
|
||||
onRefresh: _onRefresh,
|
||||
onLoading: _onLoading,
|
||||
enablePullUp: true,
|
||||
child: ListView.builder(
|
||||
|
||||
itemCount: logic.lists.length,
|
||||
|
||||
@ -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(
|
||||
|
||||
@ -364,7 +364,7 @@ class _TUIChatState extends TIMUIKitState<TIMChat> {
|
||||
}
|
||||
}
|
||||
|
||||
return bgWidget(context, GestureDetector(
|
||||
return BgWidget(widget:GestureDetector(
|
||||
onTap: () {
|
||||
textFieldController.hideAllPanel();
|
||||
},
|
||||
|
||||
@ -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');
|
||||
},
|
||||
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@ -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']);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -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),
|
||||
|
||||
@ -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!);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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("[语音]");
|
||||
|
||||
10
circle_app/lib/app/msg/sys_notify_list/binding.dart
Normal file
10
circle_app/lib/app/msg/sys_notify_list/binding.dart
Normal 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());
|
||||
}
|
||||
}
|
||||
115
circle_app/lib/app/msg/sys_notify_list/logic.dart
Normal file
115
circle_app/lib/app/msg/sys_notify_list/logic.dart
Normal 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;
|
||||
}
|
||||
}
|
||||
142
circle_app/lib/app/msg/sys_notify_list/view.dart
Normal file
142
circle_app/lib/app/msg/sys_notify_list/view.dart
Normal 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
|
||||
),
|
||||
)
|
||||
],
|
||||
)
|
||||
],
|
||||
)
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@ -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);
|
||||
},
|
||||
|
||||
|
||||
10
circle_app/lib/app/signal_circle_list/binding.dart
Normal file
10
circle_app/lib/app/signal_circle_list/binding.dart
Normal 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());
|
||||
}
|
||||
}
|
||||
7
circle_app/lib/app/signal_circle_list/logic.dart
Normal file
7
circle_app/lib/app/signal_circle_list/logic.dart
Normal 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();
|
||||
}
|
||||
5
circle_app/lib/app/signal_circle_list/state.dart
Normal file
5
circle_app/lib/app/signal_circle_list/state.dart
Normal file
@ -0,0 +1,5 @@
|
||||
class Signal_circle_listState {
|
||||
Signal_circle_listState() {
|
||||
///Initialize variables
|
||||
}
|
||||
}
|
||||
57
circle_app/lib/app/signal_circle_list/view.dart
Normal file
57
circle_app/lib/app/signal_circle_list/view.dart
Normal 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'],
|
||||
);
|
||||
}
|
||||
}
|
||||
@ -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(
|
||||
|
||||
@ -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);
|
||||
|
||||
|
||||
},
|
||||
|
||||
@ -1,13 +1,20 @@
|
||||
import 'package:circle_app/util/util.dart';
|
||||
import 'package:flutter/cupertino.dart';
|
||||
|
||||
Widget bgWidget(BuildContext context, Widget widget) {
|
||||
return Container(
|
||||
width: MediaQuery.of(context).size.width,
|
||||
height: MediaQuery.of(context).size.height,
|
||||
decoration: BoxDecoration(
|
||||
image: DecorationImage(
|
||||
fit: BoxFit.fill, image: AssetImage(getBaseImage('home_back')))),
|
||||
child: 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,
|
||||
decoration: BoxDecoration(
|
||||
image: DecorationImage(
|
||||
fit: BoxFit.fill, image: AssetImage(getBaseImage('home_back')))),
|
||||
child: widget,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@ -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';
|
||||
|
||||
}
|
||||
@ -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(),
|
||||
),
|
||||
];
|
||||
}
|
||||
|
||||
@ -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';
|
||||
}
|
||||
@ -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);
|
||||
|
||||
@ -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
|
||||
|
||||
Loading…
Reference in New Issue
Block a user