merge: 修正我的 UID 行高度
This commit is contained in:
commit
0b3f362093
4 files changed
+65
-34
No files matched your search
@@ -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。
|
||||
@@ -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;
|
||||
|
||||
@@ -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,
|
||||
),
|
||||
),
|
||||
],
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in new issue
Block a user