| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- import 'package:flutter/cupertino.dart';
- import '../../../resource/assets.gen.dart';
- import '../../../resource/colors.gen.dart';
- import '../../../widget/avatar/avatar_image_widget.dart';
- import '../../user_info/enums/gender_type.dart';
- /// 亲密用户组件,包含2个头像和中间一个心形图标
- class IntimacyUserWidget extends StatelessWidget {
- /// 组件的宽度
- final double width;
- /// 组件的高度
- final double height;
- /// 头像的大小
- final double avatarSize;
- /// 头像的边框宽度
- final double avatarBorderWidth;
- /// 爱心的大小
- final double loveSize;
- /// 我的头像
- final String myAvatar;
- /// Ta的头像
- final String taAvatar;
- /// 我的性别
- final GenderType? myGender;
- /// 他的性别
- final GenderType? taGender;
- const IntimacyUserWidget({
- super.key,
- required this.width,
- required this.height,
- required this.avatarSize,
- required this.avatarBorderWidth,
- required this.loveSize,
- required this.myAvatar,
- required this.taAvatar,
- required this.myGender,
- required this.taGender,
- });
- @override
- Widget build(BuildContext context) {
- return SizedBox(
- width: width,
- height: height,
- child: Stack(
- // 默认内容都居中
- alignment: Alignment.center,
- children: [
- // 用户1
- Positioned(
- left: 0,
- child: _buildAvatarWithGender(myAvatar, myGender),
- ),
- // 用户2
- Positioned(
- // 距离左侧的距离
- left: avatarSize - (avatarBorderWidth * 2),
- child: _buildAvatarWithGender(taAvatar, taGender),
- ),
- // 爱心
- Positioned(
- // 位置,在2个头像的中间
- left: avatarSize - (avatarBorderWidth * 2) - (loveSize / 2),
- child: Assets.images.iconIntimacyAnalyseLove.image(
- width: loveSize,
- height: loveSize,
- ),
- ),
- ],
- ),
- );
- }
- /// 用户头像
- /// [gender] 性别
- Widget _buildAvatarWithGender(String? imageUrl, GenderType? gender) {
- ImageProvider defaultImage;
- if (gender == GenderType.male) {
- // 男
- defaultImage = Assets.images.iconDefaultAvatarMale.image().image;
- } else if (gender == GenderType.female) {
- // 女
- defaultImage = Assets.images.iconDefaultAvatarFemale.image().image;
- } else {
- // 未设置
- defaultImage = Assets.images.iconDefaultAvatarUnknown.image().image;
- }
- return _buildAvatar(imageUrl, defaultImage: defaultImage);
- }
- /// 圆形头像
- Widget _buildAvatar(String? imageUrl, {ImageProvider? defaultImage}) {
- return CircleAvatarWidget(
- imageUrl: imageUrl,
- placeholderImage: defaultImage,
- borderColor: ColorName.white,
- borderWidth: avatarBorderWidth,
- backgroundColor: ColorName.white,
- size: avatarSize,
- );
- }
- }
|