merge: 修正我的 UID 行高度

This commit is contained in:
Zhou Weidong committed 2026-10-22 21:49:54 +08:00
commit 0b3f362093
4 files changed
+65 -34

No files matched your search

+1
View File
@@ -1269,3 +1269,4 @@ $ flutter test
- 宫格后新增常见问题与关于我们入口;关于页版本暂用与 pubspec 同步的常量占位。
- 继续观看全部入口可切到追剧页播放历史 tab;`flutter analyze`:No issues found。
- 用户区昵称与 UID 收紧为 4 间距,昵称列相对头像垂直居中;UID 12、复制图标 14。
- UID 行改用 GestureDetector 并锁定 16 高,昵称与 UID 间距 2、昵称行高 1.15,避免 Material 热区撑高;`flutter analyze`:No issues found。
+3 -1
View File
@@ -182,8 +182,10 @@ abstract final class AppDimens {
static const double mineSectionTitle = 15;
static const double mineAvatar = 56;
static const double mineUserName = 20;
static const double mineUserNameLineHeight = 1.2;
static const double mineUserNameLineHeight = 1.15;
static const double mineUserNameUidGap = 2;
static const double mineUid = 12;
static const double mineUidRowHeight = 16;
static const double mineCopyIcon = 14;
static const double mineGridHorizontal = 14;
static const double mineGridRadius = 12;
+39 -33
View File
@@ -48,6 +48,7 @@ class MineHeader extends StatelessWidget {
children: [
Text(
nickname,
key: const Key('mine-nickname'),
maxLines: 1,
overflow: TextOverflow.ellipsis,
style: const TextStyle(
@@ -58,43 +59,48 @@ class MineHeader extends StatelessWidget {
height: AppDimens.mineUserNameLineHeight,
),
),
const SizedBox(height: AppDimens.spaceXs),
Row(
children: [
Flexible(
child: Text(
'${l10n.accountUid}: ${uid.isEmpty ? '--' : uid}',
key: const Key('mine-uid'),
maxLines: 1,
overflow: TextOverflow.ellipsis,
style: const TextStyle(
color: AppColors.textTertiary,
fontSize: AppDimens.mineUid,
const SizedBox(height: AppDimens.mineUserNameUidGap),
SizedBox(
key: const Key('mine-uid'),
height: AppDimens.mineUidRowHeight,
child: Row(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Flexible(
child: Text(
'${l10n.accountUid}: ${uid.isEmpty ? '--' : uid}',
maxLines: 1,
overflow: TextOverflow.ellipsis,
style: const TextStyle(
color: AppColors.textTertiary,
fontSize: AppDimens.mineUid,
),
),
),
),
const SizedBox(width: AppDimens.spaceXs),
IconButton(
key: const Key('mine-uid-copy'),
tooltip: l10n.copyUid,
onPressed: uid.isEmpty
? null
: () => unawaited(
_copyUid(context, uid, l10n.uidCopied),
Semantics(
button: true,
label: l10n.copyUid,
child: GestureDetector(
key: const Key('mine-uid-copy'),
behavior: HitTestBehavior.opaque,
onTap: uid.isEmpty
? null
: () => unawaited(
_copyUid(context, uid, l10n.uidCopied),
),
child: const Padding(
padding: EdgeInsets.symmetric(horizontal: 4),
child: Icon(
Icons.copy_rounded,
color: AppColors.textTertiary,
size: AppDimens.mineCopyIcon,
),
visualDensity: VisualDensity.compact,
constraints: const BoxConstraints.tightFor(
width: AppDimens.mineCopyIcon,
height: AppDimens.mineCopyIcon,
),
),
),
padding: EdgeInsets.zero,
icon: const Icon(
Icons.copy_rounded,
color: AppColors.textTertiary,
size: AppDimens.mineCopyIcon,
),
),
],
],
),
),
],
),
+22
View File
@@ -39,6 +39,28 @@ void main() {
expect(find.text('Visitor'), findsOneWidget);
expect(find.text('UID: --'), findsOneWidget);
expect(find.byKey(const Key('mine-uid-copy')), findsOneWidget);
final uidRowSize = tester.getSize(find.byKey(const Key('mine-uid')));
expect(uidRowSize.height, closeTo(AppDimens.mineUidRowHeight, 0.1));
final nicknameRect = tester.getRect(find.byKey(const Key('mine-nickname')));
final uidRect = tester.getRect(find.byKey(const Key('mine-uid')));
expect(uidRect.top - nicknameRect.bottom, lessThanOrEqualTo(6));
final nickname = tester.widget<Text>(
find.byKey(const Key('mine-nickname')),
);
expect(nickname.style?.fontSize, AppDimens.mineUserName);
expect(nickname.style?.fontWeight, FontWeight.w700);
expect(nickname.style?.height, AppDimens.mineUserNameLineHeight);
final uid = tester.widget<Text>(find.text('UID: --'));
expect(uid.style?.fontSize, AppDimens.mineUid);
expect(uid.style?.color, AppColors.textTertiary);
final copyIcon = tester.widget<Icon>(
find.descendant(
of: find.byKey(const Key('mine-uid-copy')),
matching: find.byType(Icon),
),
);
expect(copyIcon.size, AppDimens.mineCopyIcon);
expect(copyIcon.color, AppColors.textTertiary);
expect(find.byKey(const Key('mine-login')), findsOneWidget);
expect(find.byKey(const Key('mine-edit')), findsNothing);
expect(find.byKey(const Key('mine-vip')), findsOneWidget);