Files
zh-chat-flutter/lib/views/contact/firend/recommend/friends_page.dart
2022-10-20 14:41:49 +08:00

165 lines
5.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:azlistview/azlistview.dart';
import 'package:chat/configs/app_colors.dart';
import 'package:chat/controllers/private_controller.dart';
import 'package:chat/models/im/contact_info_model.dart';
import 'package:chat/models/im/name_card_model.dart';
import 'package:chat/models/im/private_conversation_model.dart';
import 'package:chat/services/tim/conversation_service.dart';
import 'package:chat/services/tim/friend_service.dart';
import 'package:chat/utils/im_tools.dart';
import 'package:chat/widgets/custom_avatar.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:tencent_im_sdk_plugin/models/v2_tim_conversation.dart';
class ImFriendRecommendFriendsPage extends StatelessWidget {
const ImFriendRecommendFriendsPage({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
PrivateConversationModel card = PrivateController.to.currentFriend.value;
return Scaffold(
appBar: AppBar(
title: const Text('选择联系人'),
),
body: Column(
children: [
Container(
color: AppColors.page,
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(ImRoutes.friendRecommendGroups);
},
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,
),
),
),
),
Expanded(
child: GetX<TimFriendService>(builder: (_) {
return AzListView(
physics: const ClampingScrollPhysics(),
data: _.contacts,
itemCount: _.contacts.length,
itemBuilder: (__, index) {
ContactInfoModel info = _.contacts[index];
return Column(
children: [
ListTile(
onTap: () async {
FocusScope.of(Get.context!).requestFocus(FocusNode());
V2TimConversation conversation =
await TimConversationService.to.getById(
'c2c_' + info.userID,
);
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: card.userProfile?.faceUrl ?? '',
userID: card.userID,
userName: card.userProfile?.nickName ?? '',
);
TimConversationService.to.sendCustomMessage(
conversation,
model,
'NAME_CARD',
);
Get.back();
}
},
tileColor: AppColors.white,
leading: CustomAvatar(
info.friendInfo!.userProfile!.faceUrl,
size: 40,
),
title: Text(info.name),
),
const Divider(
height: 0,
indent: 72,
),
],
);
},
susItemBuilder: (__, index) {
ContactInfoModel model = _.contacts[index];
if ('' == model.getSuspensionTag()) {
return Container();
}
return ImTools.susItem(context, model.getSuspensionTag());
},
indexBarData:
SuspensionUtil.getTagIndexList(_.contacts).toList(),
indexBarOptions: ImTools.indexBarOptions,
);
}),
),
],
),
);
}
}