feat(account): IA 重排+邀请入口+删偏好卡+设置/联系 formFactor 门控
账户页重排为:账户信息 → 购买套餐/我的订单/兑换码(三行合一) → 邀请好友(新增, gift 图标+t.inviteEntry/inviteEntrySub,接 NavView.invite) → 设备(常显)/ 设置/联系(仅 mobile,桌面侧栏已有同入口,formFactor 门控避免重复) → 退出。 删语言/主题/协议卡及仅供其用的 _LangSwitch/_PangolinSwitch(l10n getter 保留, Settings 页仍用)。_NavRow 加可选 subtitle 用于邀请卡副标题。 新增 InviteScreen(client/lib/screens/invite_page.dart)占位屏:邀请码/链接卡 (可复制,值写死 PANGOLIN-DEMO)+ 奖励规则三条 + 我的奖励占位卡,顶部 TODO(spec-2) 标注接口点(邀请码/链接由后端签发,奖励进度来自 /v1/invite)。 顺带修复 desktop_shell.dart 非穷尽 switch 编译错误(NavView 加 invite 后未接线, 整个 client 目前无法编译);notifications 分支占位回落账户页,留给 Task 6 接线。 test/widget/account_ia_test.dart 新增桌面态 IA 结构断言(邀请入口存在/语言不在/ 兑换在);account_desktop_nav_test.dart 同步去掉桌面态设置/联系两个失效断言 (改走桌面侧栏,非账户卡),加邀请入口断言。desktop/tablet 账户页 golden 重录。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -8,6 +8,7 @@ import '../pangolin_theme.dart';
|
||||
import '../screens/account_page.dart';
|
||||
import '../screens/connect_page.dart';
|
||||
import '../screens/contact_page.dart';
|
||||
import '../screens/invite_page.dart';
|
||||
import '../screens/nodes_page.dart';
|
||||
import '../screens/orders_page.dart';
|
||||
import '../screens/payment_page.dart';
|
||||
@@ -52,6 +53,7 @@ class DesktopShell extends ConsumerWidget {
|
||||
NavView.purchase: t.purchaseTitle,
|
||||
NavView.payment: t.paymentTitle,
|
||||
NavView.orders: t.ordersTitle,
|
||||
NavView.invite: t.inviteTitle,
|
||||
};
|
||||
|
||||
void go(NavView v) => ref.read(navViewProvider.notifier).state = v;
|
||||
@@ -84,6 +86,11 @@ class DesktopShell extends ConsumerWidget {
|
||||
return PaymentScreen(t: t, embedded: true, onDone: () => go(NavView.account));
|
||||
case NavView.orders:
|
||||
return OrdersScreen(t: t, embedded: true);
|
||||
case NavView.invite:
|
||||
return InviteScreen(t: t, embedded: true);
|
||||
case NavView.notifications:
|
||||
// TODO(task-6): 通知屏尚未接线,占位回落账户页,避免非穷尽 switch 编译失败。
|
||||
return const AccountPage(isWide: true);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user