Files
zh-chat-flutter/lib/views/contact/firend/recommend/index_page.dart
2022-10-20 15:43:24 +08:00

181 lines
6.9 KiB
Dart
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import 'package:adaptive_dialog/adaptive_dialog.dart';
import 'package:chat/configs/app_colors.dart';
import 'package:chat/configs/app_size.dart';
import 'package:chat/controllers/private_controller.dart';
import 'package:chat/models/im/name_card_model.dart';
import 'package:chat/models/im/private_conversation_model.dart';
import 'package:chat/routes/contact_routes.dart';
import 'package:chat/services/tim/conversation_service.dart';
import 'package:chat/views/home/widgets/group_avatar.dart';
import 'package:chat/widgets/custom_avatar.dart';
import 'package:chat/widgets/custom_easy_refresh.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:tencent_im_sdk_plugin/enum/conversation_type.dart';
class ContactFriendRecommendPage extends StatelessWidget {
const ContactFriendRecommendPage({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
PrivateConversationModel info = PrivateController.to.currentFriend.value;
return GestureDetector(
onTap: () {
FocusScope.of(Get.context!).requestFocus(FocusNode());
},
child: Scaffold(
appBar: AppBar(
title: const Text(
'选择一个聊天',
),
),
body: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(
left: 16,
right: 16,
bottom: 8,
),
child: Container(
constraints: const BoxConstraints(
maxHeight: 32,
),
child: ClipRRect(
borderRadius: BorderRadius.circular(32),
child: TextField(
onChanged: (e) async {},
decoration: const InputDecoration(
hintText: '搜索',
hintStyle: TextStyle(
fontSize: 14,
color: AppColors.unactive,
),
border: InputBorder.none,
focusedBorder: InputBorder.none,
fillColor: AppColors.white,
filled: true,
contentPadding: EdgeInsets.only(
bottom: 14,
left: 16,
),
),
cursorColor: AppColors.primary,
),
),
),
),
InkWell(
onTap: () {
FocusScope.of(Get.context!).requestFocus(FocusNode());
Get.offNamed(ContactRoutes.friendRecommendFriend);
},
child: Container(
decoration: const BoxDecoration(
color: AppColors.white,
),
width: double.infinity,
padding: const EdgeInsets.only(
left: 16,
top: 12,
bottom: 12,
),
child: const Text(
'更多联系人',
style: TextStyle(
fontSize: 16,
),
),
),
),
Container(
padding: const EdgeInsets.only(
left: 16,
top: 6,
bottom: 6,
),
child: const Text(
'最近联系人',
style: TextStyle(
color: AppColors.unactive,
fontSize: AppSize.smallFontSize,
),
),
),
Expanded(
child: GetX<TimConversationService>(
builder: (_) {
return _.conversationList.isEmpty
? CustomEasyRefresh.empty()
: ListView.separated(
shrinkWrap: true,
physics: const ClampingScrollPhysics(),
itemCount: _.conversationList.length,
itemBuilder: (context, index) {
var conversation = _.conversationList[index]!;
return ListTile(
tileColor: AppColors.white,
onTap: () async {
FocusScope.of(Get.context!)
.requestFocus(FocusNode());
OkCancelResult result =
await showOkCancelAlertDialog(
style: AdaptiveStyle.iOS,
context: context,
title: '发送名片',
message:
'确定要发送【个人名片】至${conversation.showName}',
okLabel: '确定',
cancelLabel: '取消',
defaultType: OkCancelAlertDefaultType.cancel,
);
if (result == OkCancelResult.ok) {
var model = NameCardModel(
avatar: info.userProfile?.faceUrl ?? '',
userID: info.userID,
userName: info.userProfile?.nickName ?? '',
);
TimConversationService.to.sendCustomMessage(
conversation,
model,
'NAME_CARD',
);
Get.back();
}
},
leading: conversation.type ==
ConversationType.V2TIM_C2C
? CustomAvatar(
conversation.faceUrl,
)
: GroupAvatar(conversation.groupID!),
title: Text(
conversation.showName!,
style: const TextStyle(
fontSize: 16,
),
),
);
},
separatorBuilder: (context, index) {
return const Divider(
height: 0,
indent: 72,
);
},
);
},
),
),
],
),
),
);
}
}