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 同步的常量占位。 - 宫格后新增常见问题与关于我们入口;关于页版本暂用与 pubspec 同步的常量占位。
- 继续观看全部入口可切到追剧页播放历史 tab;`flutter analyze`:No issues found。 - 继续观看全部入口可切到追剧页播放历史 tab;`flutter analyze`:No issues found。
- 用户区昵称与 UID 收紧为 4 间距,昵称列相对头像垂直居中;UID 12、复制图标 14。 - 用户区昵称与 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 mineSectionTitle = 15;
static const double mineAvatar = 56; static const double mineAvatar = 56;
static const double mineUserName = 20; 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 mineUid = 12;
static const double mineUidRowHeight = 16;
static const double mineCopyIcon = 14; static const double mineCopyIcon = 14;
static const double mineGridHorizontal = 14; static const double mineGridHorizontal = 14;
static const double mineGridRadius = 12; static const double mineGridRadius = 12;
+39 -33
View File
@@ -48,6 +48,7 @@ class MineHeader extends StatelessWidget {
children: [ children: [
Text( Text(
nickname, nickname,
key: const Key('mine-nickname'),
maxLines: 1, maxLines: 1,
overflow: TextOverflow.ellipsis, overflow: TextOverflow.ellipsis,
style: const TextStyle( style: const TextStyle(
@@ -58,43 +59,48 @@ class MineHeader extends StatelessWidget {
height: AppDimens.mineUserNameLineHeight, height: AppDimens.mineUserNameLineHeight,
), ),
), ),
const SizedBox(height: AppDimens.spaceXs), const SizedBox(height: AppDimens.mineUserNameUidGap),
Row( SizedBox(
children: [ key: const Key('mine-uid'),
Flexible( height: AppDimens.mineUidRowHeight,
child: Text( child: Row(
'${l10n.accountUid}: ${uid.isEmpty ? '--' : uid}', mainAxisSize: MainAxisSize.min,
key: const Key('mine-uid'), crossAxisAlignment: CrossAxisAlignment.center,
maxLines: 1, children: [
overflow: TextOverflow.ellipsis, Flexible(
style: const TextStyle( child: Text(
color: AppColors.textTertiary, '${l10n.accountUid}: ${uid.isEmpty ? '--' : uid}',
fontSize: AppDimens.mineUid, maxLines: 1,
overflow: TextOverflow.ellipsis,
style: const TextStyle(
color: AppColors.textTertiary,
fontSize: AppDimens.mineUid,
),
), ),
), ),
), Semantics(
const SizedBox(width: AppDimens.spaceXs), button: true,
IconButton( label: l10n.copyUid,
key: const Key('mine-uid-copy'), child: GestureDetector(
tooltip: l10n.copyUid, key: const Key('mine-uid-copy'),
onPressed: uid.isEmpty behavior: HitTestBehavior.opaque,
? null onTap: uid.isEmpty
: () => unawaited( ? null
_copyUid(context, uid, l10n.uidCopied), : () => 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('Visitor'), findsOneWidget);
expect(find.text('UID: --'), findsOneWidget); expect(find.text('UID: --'), findsOneWidget);
expect(find.byKey(const Key('mine-uid-copy')), 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-login')), findsOneWidget);
expect(find.byKey(const Key('mine-edit')), findsNothing); expect(find.byKey(const Key('mine-edit')), findsNothing);
expect(find.byKey(const Key('mine-vip')), findsOneWidget); expect(find.byKey(const Key('mine-vip')), findsOneWidget);