TextSpan的文字不能设置上下居中,但是里面的图标和文字都是居中的,那就让固定文字大小和高度是文字大小14,高度14,以文字高度为标准,控制其他图标的高度即可。文字高度就是19.6,文字会居中了,然后就让左边两个图标都是18高度,设置列,让图标居中
groupMessageItem = Row(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Container(
padding:
const EdgeInsets.only(left: 10, right: 10, top: 0, bottom: 0),
margin: const EdgeInsets.only(bottom: 5),
decoration: BoxDecoration(
color: const Color(0x1A000000),
borderRadius: BorderRadius.circular(10)),
child: Row(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
ConstrainedBox(
constraints:
BoxConstraints(maxWidth: Global.screenWidth * 0.6),
child: Text.rich(TextSpan(children: [
WidgetSpan(
child: canShowRoleImage(groupMessage
.directTextMessageModel?.userInfo?.role ??
0)
? roleImage(groupMessage
.directTextMessageModel?.userInfo?.role ??
0)
: const Text(
'',
style: TextStyle(height: 1),
)),
WidgetSpan(
child: showWealthLevel()
? Container(
height: 18,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
mainAxisSize: MainAxisSize.max,
children: [
Container(
padding: const EdgeInsets.only(
left: 5, right: 5, top: 1, bottom: 1),
margin: const EdgeInsets.only(right: 5),
decoration: BoxDecoration(
color: const Color(0x66FCE08B),
borderRadius:
BorderRadius.circular(50)),
child: Row(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment:
CrossAxisAlignment.center,
mainAxisAlignment:
MainAxisAlignment.center,
children: [
const Image(
image: AssetImage(
'assets/images/icon_direct_seeding_medal.png'),
gaplessPlayback: true,
height: 13),
Container(
margin:
const EdgeInsets.only(left: 3),
child: Text(
"${groupMessage.directTextMessageModel?.userInfo?.userExpandInfo?.wealth_level}",
style: const TextStyle(
color: Colors.white,
fontSize: 12,
height: 1.08),
),
)
],
),
),
],
),
)
: const Text(
'',
style: TextStyle(height: 1.4),
),
),
TextSpan(
text: groupMessage
.directTextMessageModel?.userInfo?.nickName ??
'',
style: const TextStyle(
color: Color(0xFF80EFFF),
fontSize: 14,
height: 1.4
),
recognizer: TapGestureRecognizer()
..onTap = () {
DirectUserDetailModel userInfo = DirectUserDetailModel(
userId: int.parse(groupMessage
.directTextMessageModel
?.userInfo
?.userID ??
'0'),
avatar: groupMessage.directTextMessageModel
?.userInfo?.avatarThumb ??
'',
nickName: groupMessage.directTextMessageModel
?.userInfo?.nickName ??
'',
sex: groupMessage.directTextMessageModel
?.userInfo?.sex ??
1,
age: groupMessage.directTextMessageModel
?.userInfo?.birthday ??
0);
//2点开的是普通观众
showDirectUserDetailDialog(context, 2,
directUserDetailModel: userInfo,
roomCode: roomId,
anchorInfo: anchorInfo,
userRole: userRole);
}),
const TextSpan(text: ' ', style: TextStyle(height: 1.4)),
TextSpan(
text: groupMessage
.directTextMessageModel?.textContent ??
'',
style: const TextStyle(
color: Colors.white, fontSize: 14, height: 1.4))
])),
),
],
),
),
],
);