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