import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; import 'package:openim_common/openim_common.dart'; import 'chat_setup_logic.dart'; class ChatSetupPage extends StatelessWidget { final logic = Get.find(); ChatSetupPage({super.key}); @override Widget build(BuildContext context) { return Scaffold( appBar: TitleBar.back(), backgroundColor: Styles.c_F8F9FA, body: SingleChildScrollView( child: Obx(() => Column( children: [ _buildBaseInfoView(), 17.verticalSpace, _buildItemView( text: StrRes.topContacts, switchOn: logic.isPinned, onChanged: (_) => logic.toggleTopContacts(), showSwitchButton: true, isTopRadius: true, ), 10.verticalSpace, _buildItemView( text: StrRes.clearChatHistory, textStyle: Styles.ts_FF381F_17sp, onTap: logic.clearChatHistory, showRightArrow: true, isTopRadius: true, isBottomRadius: true, ), ], )), ), ); } Widget _buildBaseInfoView() => Container( margin: EdgeInsets.symmetric(horizontal: 10.w, vertical: 10.h), padding: EdgeInsets.symmetric(horizontal: 8.w, vertical: 10.h), decoration: BoxDecoration( color: Styles.c_FFFFFF, borderRadius: BorderRadius.circular(6.r), ), child: Row( children: [ GestureDetector( behavior: HitTestBehavior.translucent, onTap: logic.viewUserInfo, child: SizedBox( width: 60.w, child: Column( children: [ AvatarView( width: 44.w, height: 44.h, text: logic.conversationInfo.value.showName, url: logic.conversationInfo.value.faceURL, ), 8.verticalSpace, (logic.conversationInfo.value.showName ?? '').toText ..style = Styles.ts_8E9AB0_14sp ..maxLines = 1 ..overflow = TextOverflow.ellipsis, ], ), ), ), SizedBox( width: 60.w, child: Column( children: [ ImageRes.addFriendTobeGroup.toImage ..width = 44.w ..height = 44.h ..onTap = logic.createGroup, 8.verticalSpace, ''.toText ..style = Styles.ts_8E9AB0_14sp ..maxLines = 1 ..overflow = TextOverflow.ellipsis, ], ), ), ], ), ); Widget _buildItemView({ required String text, String? hintText, TextStyle? textStyle, String? value, bool switchOn = false, bool isTopRadius = false, bool isBottomRadius = false, bool showRightArrow = false, bool showSwitchButton = false, ValueChanged? onChanged, Function()? onTap, }) => GestureDetector( onTap: onTap, behavior: HitTestBehavior.translucent, child: Container( height: hintText == null ? 46.h : 68.h, margin: EdgeInsets.symmetric(horizontal: 10.w), padding: EdgeInsets.symmetric(horizontal: 16.w), decoration: BoxDecoration( color: Styles.c_FFFFFF, borderRadius: BorderRadius.only( topRight: Radius.circular(isTopRadius ? 6.r : 0), topLeft: Radius.circular(isTopRadius ? 6.r : 0), bottomLeft: Radius.circular(isBottomRadius ? 6.r : 0), bottomRight: Radius.circular(isBottomRadius ? 6.r : 0), ), ), child: Row( children: [ null != hintText ? Column( mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.start, children: [ text.toText..style = textStyle ?? Styles.ts_0C1C33_17sp, hintText.toText..style = Styles.ts_8E9AB0_14sp, ], ) : (text.toText..style = textStyle ?? Styles.ts_0C1C33_17sp), const Spacer(), if (null != value) value.toText..style = Styles.ts_8E9AB0_14sp, if (showSwitchButton) CupertinoSwitch( value: switchOn, activeColor: Styles.c_0089FF, onChanged: onChanged, ), if (showRightArrow) ImageRes.rightArrow.toImage ..width = 24.w ..height = 24.h, ], ), ), ); }