From be9afcf68d69e6bb70bbd8637e9547c40162f537 Mon Sep 17 00:00:00 2001 From: wangjia <809946525@qq.com> Date: Sat, 4 Jul 2026 11:56:04 +0800 Subject: [PATCH] =?UTF-8?q?feat(client):=20=E7=A7=BB=E5=8A=A8=E5=A3=B3?= =?UTF-8?q?=E5=9F=BA=E5=BB=BA=E2=80=94=E2=80=94=E5=BA=95=E9=83=A8=205=20ta?= =?UTF-8?q?b=20+=20=E6=88=91=E7=9A=84=20hub=20+=20=E7=BB=9F=E4=B8=80?= =?UTF-8?q?=E5=BA=95=E9=83=A8=20sheet=20+=20=E7=A7=BB=E5=8A=A8=E7=BB=84?= =?UTF-8?q?=E4=BB=B6=E5=9B=9B=E4=BB=B6=E5=A5=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 对齐移动原型体系(m-*.html)的 Stage 0 共享基建,桌面形态零改动: - 导航:router 新增 branch 9(/me 我的 + /me/license 授权屏);窄屏 tab 根 (库存/入库/出库/财务/我的)出底部 MTabBar,二级屏隐藏 tabbar + 顶栏返回箭头 (PopScope 拦系统返回键防退 app);窄屏 Drawer/汉堡删除;窄屏顶栏对齐 m-top (标题 + 主题/通知铃/头像→我的) - sheet:showMSheet(grip/标题/86vh/键盘避让)+ showAdaptiveSheet;六个共享 弹层呈现函数加窄屏 sheet 分支(订单/往来/财务往来/商品编辑抽屉 + 退单/登记收支 dialog 的 asSheet 形态) - 徽章:DsBadge/StatusPill/StatusBadge 加图标变体(默认圆点零漂移)+ status_icon_map 转录原型 BADGE_ICON 28 词 - 组件:MKpiGrid(2×2 可点 KPI)/ MSearchRow(搜索+状态钮+详搜钮)/ MHubGroup(hub 入口组)/ showThemeSheet(主题外观 sheet) - 授权:_LicensePanel/_SettingsCard 抽取为公共 LicensePanel/SettingsCard, 窄屏授权跳转 /me/license - golden:app_shell_mobile + me 各三主题(390×844@2x);全量 259 测试绿, check_ds_code / check-l1-sync 闸过 Co-Authored-By: Claude Fable 5 --- client/lib/core/router/app_router.dart | 18 +- client/lib/screens/me/license_screen.dart | 23 ++ client/lib/screens/me/me_screen.dart | 208 +++++++++++++ .../lib/screens/settings/license_panel.dart | 214 +++++++++++++ .../lib/screens/settings/settings_card.dart | 60 ++++ .../lib/screens/settings/settings_screen.dart | 265 +--------------- client/lib/screens/shell/app_shell.dart | 287 ++++++++++++------ client/lib/widgets/ds/ds_atoms.dart | 16 +- client/lib/widgets/ds/m_hub.dart | 103 +++++++ client/lib/widgets/ds/m_kpi_grid.dart | 131 ++++++++ client/lib/widgets/ds/m_search_row.dart | 151 +++++++++ client/lib/widgets/ds/m_sheet.dart | 180 +++++++++++ client/lib/widgets/ds/m_tab_bar.dart | 65 ++++ client/lib/widgets/ds/status_icon_map.dart | 50 +++ client/lib/widgets/finance_entry_dialog.dart | 63 +++- .../lib/widgets/finance_partner_drawer.dart | 14 + client/lib/widgets/kpi_card.dart | 18 +- client/lib/widgets/order_detail_drawer.dart | 16 + client/lib/widgets/order_return_dialog.dart | 37 ++- client/lib/widgets/partner_detail_drawer.dart | 15 + client/lib/widgets/product_editor_drawer.dart | 19 ++ client/lib/widgets/status_badge.dart | 13 +- client/lib/widgets/theme_sheet.dart | 89 ++++++ client/test/golden/app_shell_golden_test.dart | 3 +- .../golden/app_shell_mobile_golden_test.dart | 126 ++++++++ .../golden/goldens/app_shell_mobile_a.png | Bin 0 -> 26309 bytes .../golden/goldens/app_shell_mobile_b.png | Bin 0 -> 27462 bytes .../golden/goldens/app_shell_mobile_c.png | Bin 0 -> 26413 bytes client/test/golden/goldens/me_a.png | Bin 0 -> 73544 bytes client/test/golden/goldens/me_b.png | Bin 0 -> 72184 bytes client/test/golden/goldens/me_c.png | Bin 0 -> 74756 bytes client/test/golden/me_golden_test.dart | 51 ++++ client/test/support/shell_harness.dart | 3 +- client/test/user_menu_width_test.dart | 3 +- 34 files changed, 1851 insertions(+), 390 deletions(-) create mode 100644 client/lib/screens/me/license_screen.dart create mode 100644 client/lib/screens/me/me_screen.dart create mode 100644 client/lib/screens/settings/license_panel.dart create mode 100644 client/lib/screens/settings/settings_card.dart create mode 100644 client/lib/widgets/ds/m_hub.dart create mode 100644 client/lib/widgets/ds/m_kpi_grid.dart create mode 100644 client/lib/widgets/ds/m_search_row.dart create mode 100644 client/lib/widgets/ds/m_sheet.dart create mode 100644 client/lib/widgets/ds/m_tab_bar.dart create mode 100644 client/lib/widgets/ds/status_icon_map.dart create mode 100644 client/lib/widgets/theme_sheet.dart create mode 100644 client/test/golden/app_shell_mobile_golden_test.dart create mode 100644 client/test/golden/goldens/app_shell_mobile_a.png create mode 100644 client/test/golden/goldens/app_shell_mobile_b.png create mode 100644 client/test/golden/goldens/app_shell_mobile_c.png create mode 100644 client/test/golden/goldens/me_a.png create mode 100644 client/test/golden/goldens/me_b.png create mode 100644 client/test/golden/goldens/me_c.png create mode 100644 client/test/golden/me_golden_test.dart diff --git a/client/lib/core/router/app_router.dart b/client/lib/core/router/app_router.dart index 57501ea..e7df328 100644 --- a/client/lib/core/router/app_router.dart +++ b/client/lib/core/router/app_router.dart @@ -20,6 +20,8 @@ import '../../screens/settings/settings_screen.dart'; import '../../screens/settings/users_screen.dart'; import '../../screens/about/about_screen.dart'; import '../../screens/devices/device_management_screen.dart'; +import '../../screens/me/me_screen.dart'; +import '../../screens/me/license_screen.dart'; import '../auth/auth_state.dart'; Page _noTransition(Widget child) => NoTransitionPage(child: child); @@ -104,8 +106,10 @@ final appRouterProvider = Provider((ref) { // 及其页面 State 常驻,跨栏目切换不再销毁上一页(半填表单/内部 tab/滚动位置保活)。 // 分支顺序必须与 AppShell._navItems 一致(navigationShell.currentIndex 据此高亮)。 StatefulShellRoute.indexedStack( - builder: (context, state, navigationShell) => - AppShell(navigationShell: navigationShell), + // location 透传给壳:窄屏据此判定 tab 根 / 二级屏(底部 tabbar 显隐与返回箭头)。 + builder: (context, state, navigationShell) => AppShell( + navigationShell: navigationShell, + location: state.matchedLocation), branches: [ // 0 入库管理 StatefulShellBranch(routes: [ @@ -206,6 +210,16 @@ final appRouterProvider = Provider((ref) { path: '/about', pageBuilder: (_, __) => _noTransition(const AboutScreen())), ]), + // 9 我的(移动 hub,原型 m-me.html;桌面侧栏无此项,仅窄屏底部 tab 入口) + StatefulShellBranch(routes: [ + GoRoute( + path: '/me', + pageBuilder: (_, __) => _noTransition(const MeScreen())), + // 授权管理独立屏(原型 m-license.html,从「我的」系统组进入) + GoRoute( + path: '/me/license', + pageBuilder: (_, __) => _noTransition(const LicenseScreen())), + ]), ], ), ], diff --git a/client/lib/screens/me/license_screen.dart b/client/lib/screens/me/license_screen.dart new file mode 100644 index 0000000..31a2eb3 --- /dev/null +++ b/client/lib/screens/me/license_screen.dart @@ -0,0 +1,23 @@ +// screens/me/license_screen.dart — 授权管理独立屏(镜像原型 m-license.html)。 +// 移动端从「我的 → 系统 → 授权管理」进入(/me/license);内容 = 公共 LicensePanel +// 四卡(授权信息 / 在线购买续费 / 兑换券 / 降级规则),与桌面设置授权 tab 同源。 +import 'package:flutter/material.dart'; + +import '../../core/theme/context_tokens.dart'; +import '../settings/license_panel.dart'; + +class LicenseScreen extends StatelessWidget { + const LicenseScreen({super.key}); + + @override + Widget build(BuildContext context) { + final t = context.tokens; + return Container( + color: t.bg, + child: const SingleChildScrollView( + padding: EdgeInsets.all(14), + child: LicensePanel(), + ), + ); + } +} diff --git a/client/lib/screens/me/me_screen.dart b/client/lib/screens/me/me_screen.dart new file mode 100644 index 0000000..a219a8a --- /dev/null +++ b/client/lib/screens/me/me_screen.dart @@ -0,0 +1,208 @@ +// screens/me/me_screen.dart — 「我的」hub(镜像原型 m-me.html,移动愿景导航中枢)。 +// 结构:用户头卡(54 渐变圆头像 + 真名 + 店名·账号 + 角色徽章) +// + 经营管理组(往来单位/基础数据/库存盘点) +// + 系统组(用户管理/授权管理/设备管理/系统设置/主题外观/关于我们) +// + 退出登录(确认 sheet)。窄屏底部 tab「我的」入口;桌面侧栏不含此屏。 +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:go_router/go_router.dart'; +import 'package:lucide_icons_flutter/lucide_icons.dart'; + +import '../../core/auth/auth_state.dart'; +import '../../core/theme/app_dims.g.dart'; +import '../../core/theme/context_tokens.dart'; +import '../../providers/shop_provider.dart'; +import '../../widgets/ds/ds_atoms.dart'; +import '../../widgets/ds/m_hub.dart'; +import '../../widgets/ds/m_sheet.dart'; +import '../../widgets/ds/status_icon_map.dart'; +import '../../widgets/theme_sheet.dart'; + +String _roleLabel(String role) { + switch (role) { + case 'superadmin': + return '超级管理员'; + case 'admin': + return '管理员'; + case 'readonly': + return '只读'; + default: + return '操作员'; + } +} + +class MeScreen extends ConsumerWidget { + const MeScreen({super.key}); + + @override + Widget build(BuildContext context, WidgetRef ref) { + final t = context.tokens; + final user = ref.watch(authStateProvider).user; + final shopName = + ref.watch(shopInfoProvider).valueOrNull?.name ?? user?.shopNo ?? ''; + + return Container( + color: t.bg, + child: ListView( + padding: const EdgeInsets.all(14), + children: [ + if (user != null) _header(t, user, shopName), + MHubGroup(label: '经营管理', items: [ + MHubItem( + icon: LucideIcons.users, + label: '往来单位', + onTap: () => context.go('/partners')), + MHubItem( + icon: LucideIcons.layoutGrid, + label: '基础数据', + onTap: () => context.go('/products')), + MHubItem( + icon: LucideIcons.clipboardCheck, + label: '库存盘点', + onTap: () => context.go('/inventory/check')), + ]), + MHubGroup(label: '系统', items: [ + MHubItem( + icon: LucideIcons.userPlus, + label: '用户管理', + onTap: () => context.go('/settings/users')), + MHubItem( + icon: LucideIcons.trendingUp, + label: '授权管理', + onTap: () => context.go('/me/license')), + MHubItem( + icon: LucideIcons.monitorSmartphone, + label: '设备管理', + onTap: () => context.go('/devices')), + MHubItem( + icon: LucideIcons.settings, + label: '系统设置', + onTap: () => context.go('/settings')), + MHubItem( + icon: LucideIcons.shirt, + label: '主题外观', + onTap: () => showThemeSheet(context)), + MHubItem( + icon: LucideIcons.info, + label: '关于我们', + onTap: () => context.go('/about')), + ]), + const SizedBox(height: 18), + _LogoutButton(onConfirm: () { + ref.read(authStateProvider.notifier).logout(); + context.go('/login'); + }), + ], + ), + ); + } + + /// 用户头卡(原型 .me-hd):surface 卡 + 54 渐变圆头像 + 名/店·账号 + 角色徽章。 + Widget _header(dynamic t, AuthUser user, String shopName) { + final name = user.realName.isNotEmpty ? user.realName : user.username; + final initial = name.isNotEmpty ? name.characters.first : '用'; + final roleLabel = _roleLabel(user.role); + return Container( + padding: const EdgeInsets.all(16), + decoration: BoxDecoration( + color: t.surface, + border: Border.all(color: t.border), + borderRadius: BorderRadius.circular(AppDims.rLg), + ), + child: Row(children: [ + Container( + width: 54, + height: 54, + decoration: BoxDecoration( + gradient: LinearGradient( + begin: Alignment.topLeft, + end: Alignment.bottomRight, + colors: [t.primary, t.primaryDark], + ), + shape: BoxShape.circle, + ), + alignment: Alignment.center, + child: Text(initial, + style: TextStyle( + color: t.onPrimary, + fontSize: 22, + fontWeight: FontWeight.w800)), + ), + const SizedBox(width: 14), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text(name, + style: TextStyle( + fontSize: AppDims.fsH2, + fontWeight: FontWeight.w700, + color: t.heading)), + const SizedBox(height: 3), + Text('$shopName · ${user.username}', + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: TextStyle(fontSize: AppDims.fsSm, color: t.muted)), + ], + ), + ), + DsBadge(roleLabel, + tone: DsBadgeTone.info, icon: statusIcon(roleLabel)), + ]), + ); + } +} + +class _LogoutButton extends StatelessWidget { + final VoidCallback onConfirm; + const _LogoutButton({required this.onConfirm}); + + @override + Widget build(BuildContext context) { + final t = context.tokens; + // Material 自带(InkWell 水波 + golden 直挂无 Scaffold 场景) + return Material( + color: t.surface, + borderRadius: BorderRadius.circular(AppDims.rMd), + child: InkWell( + onTap: () => _confirm(context), + borderRadius: BorderRadius.circular(AppDims.rMd), + child: Container( + height: 44, + alignment: Alignment.center, + decoration: BoxDecoration( + border: Border.all(color: t.border), + borderRadius: BorderRadius.circular(AppDims.rMd), + ), + child: Text('退出登录', + style: TextStyle( + fontSize: AppDims.fsBody, + fontWeight: FontWeight.w600, + color: t.danger)), + ), + ), + ); + } + + void _confirm(BuildContext context) { + showMSheet( + context, + title: '退出登录', + builder: (ctx) => Text('确认退出当前账号?', + style: TextStyle( + fontSize: AppDims.fsBody, color: ctx.tokens.text)), + actions: [ + Builder( + builder: (ctx) => + DsButton('取消', onPressed: () => Navigator.of(ctx).pop())), + Builder( + builder: (ctx) => DsButton('退出登录', + variant: DsBtnVariant.danger, onPressed: () { + Navigator.of(ctx).pop(); + onConfirm(); + }), + ), + ], + ); + } +} diff --git a/client/lib/screens/settings/license_panel.dart b/client/lib/screens/settings/license_panel.dart new file mode 100644 index 0000000..2cdbf61 --- /dev/null +++ b/client/lib/screens/settings/license_panel.dart @@ -0,0 +1,214 @@ +// screens/settings/license_panel.dart — 授权管理面板(自 settings_screen.dart 抽取为公共组件)。 +// 四卡:授权信息 / 在线购买续费(PurchaseCard, admin only) / 兑换券 / 到期降级规则。 +// 桌面:SettingsScreen 授权 tab 内嵌;移动:独立屏 LicenseScreen(/me/license)复用。 +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:intl/intl.dart'; +import 'package:url_launcher/url_launcher.dart'; + +import '../../core/auth/auth_state.dart'; +import '../../core/config/app_info.dart'; +import '../../core/config/license_copy.dart'; +import '../../core/responsive/responsive.dart'; +import '../../core/theme/app_dims.g.dart'; +import '../../core/theme/app_fonts.dart'; +import '../../core/theme/context_tokens.dart'; +import '../../core/utils/clock.dart'; +import '../../providers/license_provider.dart'; +import '../../widgets/ds/ds_atoms.dart'; +import '../../widgets/ds/ds_toast.dart'; +import '../../widgets/write_guard.dart'; +import 'purchase_card.dart'; +import 'settings_card.dart'; + +class LicensePanel extends ConsumerStatefulWidget { + const LicensePanel({super.key}); + + @override + ConsumerState createState() => _LicensePanelState(); +} + +class _LicensePanelState extends ConsumerState { + final _voucherCtrl = TextEditingController(); + bool _redeeming = false; + + @override + void dispose() { + _voucherCtrl.dispose(); + super.dispose(); + } + + Future _redeem() async { + final code = _voucherCtrl.text.trim(); + if (code.isEmpty) { + showDsToast(context, '请输入兑换券短码'); + return; + } + setState(() => _redeeming = true); + try { + await ref.read(licenseRepositoryProvider).activate(code); + ref.invalidate(licenseProvider); + _voucherCtrl.clear(); + if (mounted) { + showDsToast(context, '兑换成功,已续期 ✓', bg: context.tokens.success); + } + } catch (e) { + if (mounted) { + showDsToast(context, '兑换失败:$e', bg: context.tokens.danger); + } + } finally { + if (mounted) setState(() => _redeeming = false); + } + } + + @override + Widget build(BuildContext context) { + final t = context.tokens; + final lic = ref.watch(licenseProvider).valueOrNull; + final role = ref.watch(authStateProvider.select((s) => s.user?.role)); + final isAdmin = role == 'admin' || role == 'superadmin'; + final expires = lic?.expiresAt != null + ? DateFormat('yyyy-MM-dd').format(lic!.expiresAt!) + : '—'; + // 状态/剩余天数走可注入时钟(golden 确定化),不用 model 内的 DateTime.now() + final active = lic?.isActive == true && + (lic?.expiresAt == null || lic!.expiresAt!.isAfter(appNow())); + final days = lic?.expiresAt != null + ? lic!.expiresAt!.difference(appNow()).inDays.clamp(0, 99999) + : null; + final licCells = [ + _licCell(t, '授权状态', active ? '已授权' : '未授权', + color: active ? t.success : t.warn), + _licCell(t, '到期日', expires), + _licCell(t, '剩余天数', days != null ? '$days 天' : '—'), + ]; + + return Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + // ── 卡1:授权信息(3 cell,自「关于我们」迁入)── + SettingsCard( + title: '授权信息', + desc: '当前门店的授权状态与有效期,续期时长在现有到期时间上叠加', + child: context.isMobile + ? Column(children: [ + for (final c in licCells) + Padding( + padding: const EdgeInsets.only(bottom: 10), child: c), + ]) + : Row(children: [ + for (var i = 0; i < licCells.length; i++) ...[ + if (i > 0) const SizedBox(width: 14), + Expanded(child: licCells[i]), + ], + ]), + ), + const SizedBox(height: 16), + // ── 卡2:在线购买 / 续费(后端 purchase 接口 admin only, + // 非管理员引导看官网价格页)── + if (isAdmin) + const SettingsCard( + title: '在线购买 / 续费', + desc: '选择套餐支付宝支付,到账后授权自动续期', + child: PurchaseCard(), + ) + else + SettingsCard( + title: '在线购买 / 续费', + desc: '在线购买仅门店管理员可操作', + child: Row(children: [ + Text('在线购买请联系门店管理员 · ', + style: TextStyle(fontSize: AppDims.fsSm, color: t.muted)), + InkWell( + onTap: () => + launchUrl(Uri.parse('${AppInfo.website}/#pricing')), + child: Text('查看套餐价格 →', + style: TextStyle( + fontSize: AppDims.fsSm, + fontWeight: FontWeight.w600, + color: t.primary)), + ), + ]), + ), + const SizedBox(height: 16), + // ── 卡3:兑换券(原型 .redeem:input + 按钮,max 520)── + SettingsCard( + title: '兑换券', + desc: '输入兑换券短码续期', + child: ConstrainedBox( + constraints: const BoxConstraints(maxWidth: 520), + child: Row( + crossAxisAlignment: CrossAxisAlignment.end, + children: [ + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text('兑换券短码', + style: TextStyle( + fontSize: AppDims.fsSm, color: t.muted)), + const SizedBox(height: 6), + DsInput( + controller: _voucherCtrl, + hintText: '输入兑换券短码', + ), + ], + ), + ), + const SizedBox(width: 10), + WriteGuard( + child: DsButton(_redeeming ? '兑换中…' : '兑换续期', + variant: DsBtnVariant.primary, + onPressed: _redeeming ? null : _redeem), + ), + ], + ), + ), + ), + const SizedBox(height: 16), + // ── 卡4:到期后的降级规则(现有能力保留)── + SettingsCard( + title: '到期后的降级规则', + desc: '授权到期后系统各功能的可用性说明', + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + for (final note in LicenseCopy.degradationNotes()) + Padding( + padding: const EdgeInsets.only(top: 3), + child: Text('· $note', + style: TextStyle(fontSize: AppDims.fsSm, color: t.muted)), + ), + ], + ), + ), + ], + ); + } + + /// 原型 .lic-cell(与「关于我们」同款):lk 11 muted + lv 17/700/mono。 + Widget _licCell(dynamic t, String label, String value, {Color? color}) => + Container( + padding: const EdgeInsets.fromLTRB(16, 14, 16, 14), + decoration: BoxDecoration( + color: t.bg, + border: Border.all(color: t.borderSubtle), + borderRadius: BorderRadius.circular(AppDims.rMd), + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text(label, + style: TextStyle(fontSize: AppDims.fsXs, color: t.muted)), + const SizedBox(height: 6), + Text(value, + style: TextStyle( + fontSize: AppDims.fsH2, + fontWeight: FontWeight.w700, + fontFamily: AppFonts.mono, + fontFamilyFallback: AppFonts.monoFallback, + color: color ?? t.heading)), + ], + ), + ); +} diff --git a/client/lib/screens/settings/settings_card.dart b/client/lib/screens/settings/settings_card.dart new file mode 100644 index 0000000..3c01ae5 --- /dev/null +++ b/client/lib/screens/settings/settings_card.dart @@ -0,0 +1,60 @@ +// screens/settings/settings_card.dart — 设置面板卡(自 settings_screen.dart 抽取为公共组件, +// 供 SettingsScreen 各面板与独立授权屏 LicenseScreen 复用)。 +// 原型右侧 .card:surface / 1px border / r-lg / padding 22 24 / mb18; +// h2 17 heading + desc 12 muted(可带右上角按钮)。 +import 'package:flutter/material.dart'; + +import '../../core/theme/app_dims.g.dart'; +import '../../core/theme/context_tokens.dart'; + +class SettingsCard extends StatelessWidget { + final String title; + final String desc; + final Widget child; + final Widget? trailing; + const SettingsCard( + {super.key, + required this.title, + required this.desc, + required this.child, + this.trailing}); + + @override + Widget build(BuildContext context) { + final t = context.tokens; + return Container( + margin: const EdgeInsets.only(bottom: 18), + padding: const EdgeInsets.fromLTRB(24, 22, 24, 22), + decoration: BoxDecoration( + color: t.surface, + border: Border.all(color: t.border), + borderRadius: BorderRadius.circular(AppDims.rLg), + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + Row(children: [ + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text(title, + style: TextStyle( + fontSize: AppDims.fsH2, + fontWeight: FontWeight.w700, + color: t.heading)), + const SizedBox(height: 3), + Text(desc, + style: TextStyle(fontSize: AppDims.fsSm, color: t.muted)), + ], + ), + ), + if (trailing != null) trailing!, + ]), + const SizedBox(height: 16), + child, + ], + ), + ); + } +} diff --git a/client/lib/screens/settings/settings_screen.dart b/client/lib/screens/settings/settings_screen.dart index 6742112..de5d1a8 100644 --- a/client/lib/screens/settings/settings_screen.dart +++ b/client/lib/screens/settings/settings_screen.dart @@ -7,23 +7,17 @@ import 'package:file_picker/file_picker.dart'; import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:go_router/go_router.dart'; -import 'package:intl/intl.dart'; import 'package:lucide_icons_flutter/lucide_icons.dart'; -import 'package:url_launcher/url_launcher.dart'; import '../../core/auth/auth_state.dart'; -import '../../core/config/app_info.dart'; -import '../../core/config/license_copy.dart'; import '../../core/responsive/responsive.dart'; import '../../core/theme/app_dims.g.dart'; import '../../core/theme/app_tokens.g.dart'; import '../../core/theme/context_tokens.dart'; import '../../core/theme/theme_controller.dart'; -import '../../core/utils/clock.dart'; import '../../core/utils/dialog_util.dart'; import '../../models/number_rule.dart'; import '../../models/shop.dart'; -import '../../providers/license_provider.dart'; import '../../providers/number_rule_provider.dart'; import '../../providers/shop_provider.dart'; import '../../providers/user_provider.dart'; @@ -32,7 +26,8 @@ import '../../widgets/ds/ds_atoms.dart'; import '../../widgets/ds/ds_menu.dart'; import '../../widgets/ds/ds_table.dart'; import '../../widgets/write_guard.dart'; -import 'purchase_card.dart'; +import 'license_panel.dart'; +import 'settings_card.dart'; import 'users_screen.dart' show userRoleBadge, userStatusBadge; import '../../core/theme/app_fonts.dart'; import '../../widgets/ds/ds_toast.dart'; @@ -175,7 +170,7 @@ class _SettingsScreenState extends ConsumerState { 0 => const _StoreInfoPanel(), 1 => _usersPanel(), 2 => _numberPanel(), - 3 => const _LicensePanel(), + 3 => const LicensePanel(), 4 => const _PrefPanel(), _ => const SizedBox(), }; @@ -184,7 +179,7 @@ class _SettingsScreenState extends ConsumerState { Widget _usersPanel() { final t = context.tokens; final async = ref.watch(userListProvider); - return _SettingsCard( + return SettingsCard( title: '用户管理', desc: '管理门店成员与权限角色', trailing: DsButton('管理全部用户', @@ -250,7 +245,7 @@ class _SettingsScreenState extends ConsumerState { Widget _numberPanel() { final t = context.tokens; final async = ref.watch(numberRuleListProvider); - return _SettingsCard( + return SettingsCard( title: '编号规则', desc: '单据编号的前缀 / 日期格式 / 序号', child: async.when( @@ -364,59 +359,6 @@ class _SettingsScreenState extends ConsumerState { } } -/// 原型右侧 .card:surface / 1px border / r-lg / padding 22 24 / mb18; -/// h2 17 heading + desc 12 muted(可带右上角按钮)。 -class _SettingsCard extends StatelessWidget { - final String title; - final String desc; - final Widget child; - final Widget? trailing; - const _SettingsCard( - {required this.title, - required this.desc, - required this.child, - this.trailing}); - - @override - Widget build(BuildContext context) { - final t = context.tokens; - return Container( - margin: const EdgeInsets.only(bottom: 18), - padding: const EdgeInsets.fromLTRB(24, 22, 24, 22), - decoration: BoxDecoration( - color: t.surface, - border: Border.all(color: t.border), - borderRadius: BorderRadius.circular(AppDims.rLg), - ), - child: Column( - crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - Row(children: [ - Expanded( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text(title, - style: TextStyle( - fontSize: AppDims.fsH2, - fontWeight: FontWeight.w700, - color: t.heading)), - const SizedBox(height: 3), - Text(desc, - style: TextStyle(fontSize: AppDims.fsSm, color: t.muted)), - ], - ), - ), - if (trailing != null) trailing!, - ]), - const SizedBox(height: 16), - child, - ], - ), - ); - } -} - // ── 面板 1:门店信息(内联表单)────────────────────────────── class _StoreInfoPanel extends ConsumerStatefulWidget { const _StoreInfoPanel(); @@ -511,7 +453,7 @@ class _StoreInfoPanelState extends ConsumerState<_StoreInfoPanel> { // 授权过期 >7 天同样禁编辑(后端 LicenseGuard 会 403,这里不误导) !WriteGuard.licenseBlocked(ref); - return _SettingsCard( + return SettingsCard( title: '门店信息', desc: '用于单据抬头、对账与多端展示', child: async.when( @@ -641,199 +583,6 @@ class _StoreInfoPanelState extends ConsumerState<_StoreInfoPanel> { } } -// ── 面板 4:授权管理 ─────────────────────────────────────── -class _LicensePanel extends ConsumerStatefulWidget { - const _LicensePanel(); - - @override - ConsumerState<_LicensePanel> createState() => _LicensePanelState(); -} - -class _LicensePanelState extends ConsumerState<_LicensePanel> { - final _voucherCtrl = TextEditingController(); - bool _redeeming = false; - - @override - void dispose() { - _voucherCtrl.dispose(); - super.dispose(); - } - - Future _redeem() async { - final code = _voucherCtrl.text.trim(); - if (code.isEmpty) { - showDsToast(context, '请输入兑换券短码'); - return; - } - setState(() => _redeeming = true); - try { - await ref.read(licenseRepositoryProvider).activate(code); - ref.invalidate(licenseProvider); - _voucherCtrl.clear(); - if (mounted) { - showDsToast(context, '兑换成功,已续期 ✓', bg: context.tokens.success); - } - } catch (e) { - if (mounted) { - showDsToast(context, '兑换失败:$e', bg: context.tokens.danger); - } - } finally { - if (mounted) setState(() => _redeeming = false); - } - } - - @override - Widget build(BuildContext context) { - final t = context.tokens; - final lic = ref.watch(licenseProvider).valueOrNull; - final role = ref.watch(authStateProvider.select((s) => s.user?.role)); - final isAdmin = role == 'admin' || role == 'superadmin'; - final expires = lic?.expiresAt != null - ? DateFormat('yyyy-MM-dd').format(lic!.expiresAt!) - : '—'; - // 状态/剩余天数走可注入时钟(golden 确定化),不用 model 内的 DateTime.now() - final active = lic?.isActive == true && - (lic?.expiresAt == null || lic!.expiresAt!.isAfter(appNow())); - final days = lic?.expiresAt != null - ? lic!.expiresAt!.difference(appNow()).inDays.clamp(0, 99999) - : null; - final licCells = [ - _licCell(t, '授权状态', active ? '已授权' : '未授权', - color: active ? t.success : t.warn), - _licCell(t, '到期日', expires), - _licCell(t, '剩余天数', days != null ? '$days 天' : '—'), - ]; - - return Column( - crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - // ── 卡1:授权信息(3 cell,自「关于我们」迁入)── - _SettingsCard( - title: '授权信息', - desc: '当前门店的授权状态与有效期,续期时长在现有到期时间上叠加', - child: context.isMobile - ? Column(children: [ - for (final c in licCells) - Padding( - padding: const EdgeInsets.only(bottom: 10), child: c), - ]) - : Row(children: [ - for (var i = 0; i < licCells.length; i++) ...[ - if (i > 0) const SizedBox(width: 14), - Expanded(child: licCells[i]), - ], - ]), - ), - const SizedBox(height: 16), - // ── 卡2:在线购买 / 续费(后端 purchase 接口 admin only, - // 非管理员引导看官网价格页)── - if (isAdmin) - const _SettingsCard( - title: '在线购买 / 续费', - desc: '选择套餐支付宝支付,到账后授权自动续期', - child: PurchaseCard(), - ) - else - _SettingsCard( - title: '在线购买 / 续费', - desc: '在线购买仅门店管理员可操作', - child: Row(children: [ - Text('在线购买请联系门店管理员 · ', - style: TextStyle(fontSize: AppDims.fsSm, color: t.muted)), - InkWell( - onTap: () => - launchUrl(Uri.parse('${AppInfo.website}/#pricing')), - child: Text('查看套餐价格 →', - style: TextStyle( - fontSize: AppDims.fsSm, - fontWeight: FontWeight.w600, - color: t.primary)), - ), - ]), - ), - const SizedBox(height: 16), - // ── 卡3:兑换券(原型 .redeem:input + 按钮,max 520)── - _SettingsCard( - title: '兑换券', - desc: '输入兑换券短码续期', - child: ConstrainedBox( - constraints: const BoxConstraints(maxWidth: 520), - child: Row( - crossAxisAlignment: CrossAxisAlignment.end, - children: [ - Expanded( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text('兑换券短码', - style: TextStyle( - fontSize: AppDims.fsSm, color: t.muted)), - const SizedBox(height: 6), - DsInput( - controller: _voucherCtrl, - hintText: '输入兑换券短码', - ), - ], - ), - ), - const SizedBox(width: 10), - WriteGuard( - child: DsButton(_redeeming ? '兑换中…' : '兑换续期', - variant: DsBtnVariant.primary, - onPressed: _redeeming ? null : _redeem), - ), - ], - ), - ), - ), - const SizedBox(height: 16), - // ── 卡4:到期后的降级规则(现有能力保留)── - _SettingsCard( - title: '到期后的降级规则', - desc: '授权到期后系统各功能的可用性说明', - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - for (final note in LicenseCopy.degradationNotes()) - Padding( - padding: const EdgeInsets.only(top: 3), - child: Text('· $note', - style: TextStyle(fontSize: AppDims.fsSm, color: t.muted)), - ), - ], - ), - ), - ], - ); - } - - /// 原型 .lic-cell(与「关于我们」同款):lk 11 muted + lv 17/700/mono。 - Widget _licCell(dynamic t, String label, String value, {Color? color}) => - Container( - padding: const EdgeInsets.fromLTRB(16, 14, 16, 14), - decoration: BoxDecoration( - color: t.bg, - border: Border.all(color: t.borderSubtle), - borderRadius: BorderRadius.circular(AppDims.rMd), - ), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text(label, - style: TextStyle(fontSize: AppDims.fsXs, color: t.muted)), - const SizedBox(height: 6), - Text(value, - style: TextStyle( - fontSize: AppDims.fsH2, - fontWeight: FontWeight.w700, - fontFamily: AppFonts.mono, - fontFamilyFallback: AppFonts.monoFallback, - color: color ?? t.heading)), - ], - ), - ); -} - // ── 面板 5:偏好设置(主题三卡 + 默认仓库)─────────────────── class _PrefPanel extends ConsumerWidget { const _PrefPanel(); @@ -852,7 +601,7 @@ class _PrefPanel extends ConsumerWidget { final warehouses = ref.watch(warehouseListProvider).valueOrNull ?? const []; final defaultWh = warehouses.where((w) => w.isDefault).firstOrNull; - return _SettingsCard( + return SettingsCard( title: '偏好设置', desc: '主题与默认值,仅影响当前账号在本端的体验', child: Column( diff --git a/client/lib/screens/shell/app_shell.dart b/client/lib/screens/shell/app_shell.dart index 88e43e0..7b46c27 100644 --- a/client/lib/screens/shell/app_shell.dart +++ b/client/lib/screens/shell/app_shell.dart @@ -12,6 +12,7 @@ import '../../core/config/license_copy.dart'; import '../../core/responsive/responsive.dart'; import '../../core/theme/context_tokens.dart'; import '../../core/theme/app_chrome.g.dart'; +import '../../core/theme/app_dims.g.dart'; import '../../providers/connectivity_provider.dart'; import '../../providers/session_heartbeat.dart'; import '../../providers/shop_provider.dart'; @@ -24,6 +25,8 @@ import '../../widgets/notification_bell.dart'; import '../../widgets/app_status_bar.dart'; import '../../widgets/ds/ds_atoms.dart'; import '../../widgets/ds/ds_toast.dart'; +import '../../widgets/ds/m_tab_bar.dart'; +import '../../widgets/theme_sheet.dart'; /// 侧栏导航项(含其 StatefulShellRoute 分支序号 = router 中的 branch index)。 class _NavItem { @@ -59,6 +62,47 @@ const _navGroups = <_NavGroup>[ ]), ]; +// ── 窄屏底部 tab(对齐原型 mobile-shell.js TABS:库存/入库/出库/财务/我的)── +// (图标, 文案, branch index);branch index 对应 router StatefulShellRoute 分支序号。 +const _mobileTabs = <(IconData, String, int)>[ + (LucideIcons.box, '库存', 2), + (LucideIcons.download, '入库', 0), + (LucideIcons.upload, '出库', 1), + (LucideIcons.receiptText, '财务', 3), + (LucideIcons.user, '我的', 9), +]; + +/// 窄屏 tab 根路由白名单:命中显示底部 tabbar;未命中即二级屏(隐藏 tabbar + 返回箭头)。 +const _tabRoots = {'/inventory', '/stock-in', '/stock-out', '/finance', '/me'}; + +/// branch index → 底部 tab 高亮位;4-9(往来/基础数据/设备/设置/关于/我的)归「我的域」。 +int _tabForBranch(int branch) => switch (branch) { + 2 => 0, + 0 => 1, + 1 => 2, + 3 => 3, + _ => 4, + }; + +/// 窄屏顶栏标题(对齐原型 m-top data-title)。 +String _mobileTitle(String loc) { + if (loc.startsWith('/stock-in')) return '入库管理'; + if (loc.startsWith('/stock-out')) return '出库管理'; + if (loc == '/inventory/check') return '库存盘点'; + if (loc.startsWith('/inventory')) return '库存管理'; + if (loc.startsWith('/finance')) return '财务管理'; + if (loc.startsWith('/partners')) return '往来单位'; + if (loc.startsWith('/products/')) return '商品详情'; + if (loc.startsWith('/products')) return '基础数据'; + if (loc.startsWith('/devices')) return '设备管理'; + if (loc == '/settings/users') return '用户管理'; + if (loc.startsWith('/settings')) return '系统设置'; + if (loc.startsWith('/about')) return '关于我们'; + if (loc == '/me/license') return '授权管理'; + if (loc.startsWith('/me')) return '我的'; + return ''; +} + String _roleLabel(String role) { switch (role) { case 'superadmin': @@ -76,7 +120,11 @@ class AppShell extends ConsumerStatefulWidget { /// StatefulShellRoute 注入的导航壳:各栏目分支 Navigator 的 IndexedStack, /// 跨栏目切换时各分支页面 State 常驻(保住半填表单 / 内部 tab / 滚动位置)。 final StatefulNavigationShell navigationShell; - const AppShell({super.key, required this.navigationShell}); + + /// 当前匹配路由(router 透传):窄屏据此判定 tab 根 / 二级屏。 + final String location; + const AppShell( + {super.key, required this.navigationShell, required this.location}); @override ConsumerState createState() => _AppShellState(); @@ -86,7 +134,6 @@ class _AppShellState extends ConsumerState { final String _loginTime = DateFormat('HH:mm:ss').format(AppStatusBar.clock()); bool _forceDialogShown = false; bool _licenseDialogShown = false; - final GlobalKey _scaffoldKey = GlobalKey(); /// 打开账号菜单(个人设置 / 退出登录)。[anchorContext] = 用户区组件的 context, /// 据其实测宽度让菜单等宽(不溢出内容区)、据其位置把菜单**完整弹到按钮正上方** @@ -137,6 +184,24 @@ class _AppShellState extends ConsumerState { context.go('/login'); } + /// 窄屏二级屏返回:分支内有栈先 pop;分支根按来源兜底(商品详情→列表,其余→我的)。 + void _backFromSecondary() { + if (context.canPop()) { + context.pop(); + return; + } + final loc = widget.location; + if (loc.startsWith('/products/')) { + context.go('/products'); + } else if (loc.startsWith('/stock-in/')) { + context.go('/stock-in'); + } else if (loc.startsWith('/stock-out/')) { + context.go('/stock-out'); + } else { + context.go('/me'); + } + } + @override Widget build(BuildContext context) { final user = ref.watch(authStateProvider).user; @@ -155,14 +220,15 @@ class _AppShellState extends ConsumerState { final updateInfo = ref.watch(updateProvider).valueOrNull; final licenseInfo = ref.watch(licenseProvider).valueOrNull; - return SelectionArea( + // 窄屏导航形态(对齐原型移动壳):tab 根显示底部 tabbar,二级屏隐藏 tabbar + // 并在顶栏出返回箭头(_buildTopBar 内)。 + final isTabRoot = _tabRoots.contains(widget.location); + + final Widget shell = SelectionArea( child: Scaffold( - key: _scaffoldKey, - drawer: isMobile ? _buildDrawer(context, user) : null, - drawerEnableOpenDragGesture: !kIsWeb && isMobile, body: Column( children: [ - _buildTopBar(context, user, isMobile, topInset), + _buildTopBar(context, user, isMobile, isTabRoot, topInset), Expanded( child: Row( children: [ @@ -182,46 +248,125 @@ class _AppShellState extends ConsumerState { ), ], ), + bottomNavigationBar: isMobile && isTabRoot + ? MTabBar( + items: [for (final t in _mobileTabs) MTabItem(t.$1, t.$2)], + currentIndex: + _tabForBranch(widget.navigationShell.currentIndex), + onTap: (i) => _goBranch(_mobileTabs[i].$3), + ) + : null, ), ); + + // 窄屏二级屏拦截系统返回键:分支根直接返回会退出 app,改走 _backFromSecondary + // 回「我的」。Web 不拦截(浏览器历史由 go_router 管理)。 + if (!kIsWeb && isMobile && !isTabRoot) { + return PopScope( + canPop: false, + onPopInvokedWithResult: (didPop, _) { + if (!didPop) _backFromSecondary(); + }, + child: shell, + ); + } + return shell; } - // ── 顶栏(原型 .top, 56h):左两级品牌;右 主题器 + 通知铃 ─────────────────── - Widget _buildTopBar( - BuildContext context, AuthUser? user, bool isMobile, double topInset) { + // ── 顶栏 ───────────────────────────────────────────────────────────────── + // 桌面(原型 .top, 56h):左两级品牌;右 主题器 + 通知铃。 + // 窄屏(原型 .m-top, 52h):左 返回箭头(二级屏)/门店品牌(tab 根) + 屏标题; + // 右 主题 + 通知铃 + 头像(→我的)。 + Widget _buildTopBar(BuildContext context, AuthUser? user, bool isMobile, + bool isTabRoot, double topInset) { final t = context.tokens; + if (isMobile) { + return Container( + height: 52 + topInset, + decoration: BoxDecoration( + color: t.topBg, + border: Border(bottom: BorderSide(color: t.topBorder)), + ), + padding: EdgeInsets.only( + top: topInset, left: isTabRoot ? 14 : 6, right: 14), + child: Row( + children: [ + if (!isTabRoot) + IconButton( + icon: Icon(LucideIcons.arrowLeft, color: t.topFg, size: 22), + tooltip: '返回', + onPressed: _backFromSecondary, + ), + Expanded( + child: Row(children: [ + Flexible( + child: Text( + _mobileTitle(widget.location), + overflow: TextOverflow.ellipsis, + style: TextStyle( + color: t.topFg, + fontSize: AppDims.fsTitle, + fontWeight: FontWeight.w700), + ), + ), + if (WriteGuard.isReadonly(ref)) ...[ + const SizedBox(width: 10), + _readonlyBadge(t.topControl), + ], + ]), + ), + const SizedBox(width: 10), + IconButton( + icon: Icon(LucideIcons.shirt, color: t.topFg, size: 19), + tooltip: '主题外观', + onPressed: () => showThemeSheet(context), + ), + const NotificationBell(), + const SizedBox(width: 8), + // 头像(.m-av 28px 圆)→ 我的 + InkWell( + onTap: () => _goBranch(9), + borderRadius: BorderRadius.circular(999), + child: Container( + width: 28, + height: 28, + decoration: + BoxDecoration(color: t.primary, shape: BoxShape.circle), + alignment: Alignment.center, + child: Text( + _avatarInitial(user), + style: TextStyle( + color: t.onPrimary, + fontSize: AppDims.fsSm, + fontWeight: FontWeight.w700), + ), + ), + ), + ], + ), + ); + } return Container( height: 56 + topInset, decoration: BoxDecoration( color: t.topBg, border: Border(bottom: BorderSide(color: t.topBorder)), ), - padding: - EdgeInsets.only(top: topInset, left: isMobile ? 6 : 18, right: 14), + padding: EdgeInsets.only(top: topInset, left: 18, right: 14), child: Row( children: [ // 左组(占满剩余空间,靠左):把右组(主题器+铃)挤到最右 Expanded( child: Row( children: [ - if (isMobile) ...[ - IconButton( - icon: Icon(LucideIcons.menu, color: t.topFg), - tooltip: '菜单', - onPressed: () => _scaffoldKey.currentState?.openDrawer(), - ), - const SizedBox(width: 2), - ], - // 软件品牌(岩美酒库)—— 桌面常显,窄屏让位给门店 - if (!isMobile) ...[ - const _SoftwareBrand(), - Container( - width: 1, - height: 20, - color: t.topBorder, - margin: const EdgeInsets.symmetric(horizontal: 8), - ), - ], + // 软件品牌(岩美酒库) + const _SoftwareBrand(), + Container( + width: 1, + height: 20, + color: t.topBorder, + margin: const EdgeInsets.symmetric(horizontal: 8), + ), // 门店品牌(御品轩名酒坊)——点开门店信息;过长省略 Flexible(child: _ShopBrand(user: user)), if (WriteGuard.isReadonly(ref)) ...[ @@ -241,6 +386,13 @@ class _AppShellState extends ConsumerState { ); } + String _avatarInitial(AuthUser? user) { + final name = user == null + ? '' + : (user.realName.isNotEmpty ? user.realName : user.username); + return name.isNotEmpty ? name.characters.first : '用'; + } + Widget _readonlyBadge(Color bg) { return Container( padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 3), @@ -349,75 +501,6 @@ class _AppShellState extends ConsumerState { ); } - /// 窄屏(手机)侧滑抽屉导航:与侧栏同分组结构。 - Widget _buildDrawer(BuildContext context, AuthUser? user) { - final t = context.tokens; - return Drawer( - child: Container( - color: t.sideBg, - child: SafeArea( - child: Column( - children: [ - if (user != null) - Container( - width: double.infinity, - padding: const EdgeInsets.fromLTRB(16, 16, 16, 12), - color: t.topBg, - child: Row( - children: [ - const _SoftwareBrandMark(size: 30), - const SizedBox(width: 8), - const Text('岩美酒库', - style: TextStyle( - color: AppChrome.onAccent, - fontSize: 17, - fontWeight: FontWeight.w700)), - ], - ), - ), - Expanded( - child: ListView( - padding: const EdgeInsets.symmetric(horizontal: 12), - children: [ - for (final g in _navGroups) ...[ - _navLabel(t, g.label), - for (final item in g.items) - _SidebarNav( - item: item, - active: - widget.navigationShell.currentIndex == item.index, - onTap: () { - Navigator.pop(context); - _goBranch(item.index); - }, - ), - ], - ], - ), - ), - if (user != null) ...[ - Container( - height: 1, - color: t.sideBorder, - margin: const EdgeInsets.symmetric(horizontal: 16)), - ListTile( - leading: Icon(LucideIcons.logOut, color: t.sideFg), - title: Text('退出登录', - style: TextStyle( - color: t.sideActiveFg, fontWeight: FontWeight.w500)), - onTap: () { - Navigator.pop(context); - _logout(); - }, - ), - ], - ], - ), - ), - ), - ); - } - // ── 顶部横幅(更新 / 强制更新 / 授权 / 离线):保持原有行为 ─────────────────── List _buildBanners( BuildContext context, @@ -553,7 +636,9 @@ class _AppShellState extends ConsumerState { overflow: TextOverflow.ellipsis), ), TextButton( - onPressed: () => context.go('/settings?tab=license'), + // 窄屏授权入口是独立屏(我的→授权管理),宽屏保持设置授权 tab + onPressed: () => context.go( + context.isMobile ? '/me/license' : '/settings?tab=license'), style: TextButton.styleFrom(foregroundColor: AppChrome.onAccentFaint), child: const Text('去激活'), @@ -584,7 +669,7 @@ class _AppShellState extends ConsumerState { ? DsBtnVariant.primary : DsBtnVariant.danger, onPressed: () { Navigator.pop(_); - ctx.go('/settings?tab=license'); + ctx.go(ctx.isMobile ? '/me/license' : '/settings?tab=license'); }), ], ), diff --git a/client/lib/widgets/ds/ds_atoms.dart b/client/lib/widgets/ds/ds_atoms.dart index 5b07e18..690469f 100644 --- a/client/lib/widgets/ds/ds_atoms.dart +++ b/client/lib/widgets/ds/ds_atoms.dart @@ -92,10 +92,13 @@ class DsButton extends StatelessWidget { enum DsBadgeTone { ok, danger, warn, info, accent, muted } /// 原型 .badge:h22 / pad 0 9 / r-pill / fs-sm fw600 + 前导圆点(6px, currentColor)。 +/// [icon] 非空 → 图标徽章变体(原型 .badge.bi:12px 图标替圆点,icons.js BADGE_ICON +/// 拍板「圆点→代表图标」);默认 null 保持圆点形态(桌面存量 golden 零漂移)。 class DsBadge extends StatelessWidget { final String label; final DsBadgeTone tone; - const DsBadge(this.label, {super.key, this.tone = DsBadgeTone.ok}); + final IconData? icon; + const DsBadge(this.label, {super.key, this.tone = DsBadgeTone.ok, this.icon}); @override Widget build(BuildContext context) { @@ -116,10 +119,13 @@ class DsBadge extends StatelessWidget { child: Row( mainAxisSize: MainAxisSize.min, children: [ - Container( - width: 6, - height: 6, - decoration: BoxDecoration(color: fg, shape: BoxShape.circle)), + if (icon != null) + Icon(icon, size: 12, color: fg) + else + Container( + width: 6, + height: 6, + decoration: BoxDecoration(color: fg, shape: BoxShape.circle)), const SizedBox(width: 5), Text(label, style: TextStyle( diff --git a/client/lib/widgets/ds/m_hub.dart b/client/lib/widgets/ds/m_hub.dart new file mode 100644 index 0000000..d39b9cb --- /dev/null +++ b/client/lib/widgets/ds/m_hub.dart @@ -0,0 +1,103 @@ +// widgets/ds/m_hub.dart — 移动 hub 入口组(镜像原型 mobile-atoms .m-hub / .m-section)。 +// 组 = 可选分组标题(.m-section) + 圆角组卡;行 = 34×34 圆角图标底(.hic brand50/primary) +// + 文案(fs-body) + 右侧 ›(.hchev faint);行间 border-subtle 分隔。 +import 'package:flutter/material.dart'; +import 'package:lucide_icons_flutter/lucide_icons.dart'; + +import '../../core/theme/app_dims.g.dart'; +import '../../core/theme/context_tokens.dart'; + +class MHubItem { + final IconData icon; + final String label; + final VoidCallback? onTap; + + /// 自定义尾部(如角标 / 当前值文案);null → 默认 › 箭头。 + final Widget? trailing; + const MHubItem({ + required this.icon, + required this.label, + this.onTap, + this.trailing, + }); +} + +class MHubGroup extends StatelessWidget { + /// 分组标题(.m-section);null 不渲染。 + final String? label; + final List items; + const MHubGroup({super.key, this.label, required this.items}); + + @override + Widget build(BuildContext context) { + final t = context.tokens; + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + if (label != null) + Padding( + padding: const EdgeInsets.fromLTRB(2, 16, 2, 8), + child: Text(label!, + style: TextStyle( + fontSize: AppDims.fsSm, + fontWeight: FontWeight.w700, + letterSpacing: .4, + color: t.muted)), + ), + // Material 自带(InkWell 水波 + golden 直挂无 Scaffold 场景) + Material( + color: t.surface, + clipBehavior: Clip.antiAlias, + shape: RoundedRectangleBorder( + side: BorderSide(color: t.border), + borderRadius: BorderRadius.circular(AppDims.rLg), + ), + child: Column(children: [ + for (var i = 0; i < items.length; i++) + _MHubRow(item: items[i], last: i == items.length - 1), + ]), + ), + ], + ); + } +} + +class _MHubRow extends StatelessWidget { + final MHubItem item; + final bool last; + const _MHubRow({required this.item, required this.last}); + + @override + Widget build(BuildContext context) { + final t = context.tokens; + return InkWell( + onTap: item.onTap, + child: Container( + padding: const EdgeInsets.all(14), + decoration: BoxDecoration( + border: last + ? null + : Border(bottom: BorderSide(color: t.borderSubtle)), + ), + child: Row(children: [ + Container( + width: 34, + height: 34, + decoration: BoxDecoration( + color: t.brand50, + borderRadius: BorderRadius.circular(AppDims.rMd), + ), + child: Icon(item.icon, size: 18, color: t.primary), + ), + const SizedBox(width: 12), + Expanded( + child: Text(item.label, + style: TextStyle(fontSize: AppDims.fsBody, color: t.text)), + ), + item.trailing ?? + Icon(LucideIcons.chevronRight, size: 18, color: t.faint), + ]), + ), + ); + } +} diff --git a/client/lib/widgets/ds/m_kpi_grid.dart b/client/lib/widgets/ds/m_kpi_grid.dart new file mode 100644 index 0000000..711c0c0 --- /dev/null +++ b/client/lib/widgets/ds/m_kpi_grid.dart @@ -0,0 +1,131 @@ +// widgets/ds/m_kpi_grid.dart — 移动 2×2 KPI 网格(镜像原型 mobile-atoms .m-kpi)。 +// 卡:surface / 1px border / r-lg / pad 12·14;kl=fs-xs muted(可带 13px brand400 图标); +// kv=fs-h2 w800 heading;kd=fs-xs(up/down/warn 三色)。 +// KPI 即筛选:onTap 非空可点,selected 态描边 primary(对齐 m-stock-*-list 可点 KPI)。 +import 'package:flutter/material.dart'; + +import '../../core/theme/app_dims.g.dart'; +import '../../core/theme/context_tokens.dart'; + +enum MKpiDeltaTone { normal, up, down, warn } + +class MKpiItem { + final String label; + final String value; + final IconData? icon; + final String? delta; + final MKpiDeltaTone deltaTone; + final VoidCallback? onTap; + final bool selected; + const MKpiItem({ + required this.label, + required this.value, + this.icon, + this.delta, + this.deltaTone = MKpiDeltaTone.normal, + this.onTap, + this.selected = false, + }); +} + +class MKpiGrid extends StatelessWidget { + final List items; + const MKpiGrid({super.key, required this.items}); + + @override + Widget build(BuildContext context) { + // 两列网格 gap10:按行切分,用 Row/Expanded 保证等宽等高。 + final rows = >[]; + for (var i = 0; i < items.length; i += 2) { + rows.add(items.sublist(i, (i + 2).clamp(0, items.length))); + } + return Column( + children: [ + for (var r = 0; r < rows.length; r++) ...[ + if (r > 0) const SizedBox(height: 10), + IntrinsicHeight( + child: Row( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + for (var c = 0; c < 2; c++) ...[ + if (c > 0) const SizedBox(width: 10), + Expanded( + child: c < rows[r].length + ? _MKpiCard(item: rows[r][c]) + : const SizedBox.shrink(), + ), + ], + ], + ), + ), + ], + ], + ); + } +} + +class _MKpiCard extends StatelessWidget { + final MKpiItem item; + const _MKpiCard({required this.item}); + + @override + Widget build(BuildContext context) { + final t = context.tokens; + final deltaColor = switch (item.deltaTone) { + MKpiDeltaTone.up => t.success, + MKpiDeltaTone.down => t.danger, + MKpiDeltaTone.warn => t.warn, + MKpiDeltaTone.normal => t.muted, + }; + final card = Container( + padding: const EdgeInsets.fromLTRB(14, 12, 14, 12), + decoration: BoxDecoration( + border: Border.all(color: item.selected ? t.primary : t.border), + borderRadius: BorderRadius.circular(AppDims.rLg), + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row(children: [ + if (item.icon != null) ...[ + Icon(item.icon, size: 13, color: t.brand400), + const SizedBox(width: 5), + ], + Expanded( + child: Text(item.label, + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: TextStyle(fontSize: AppDims.fsXs, color: t.muted)), + ), + ]), + const SizedBox(height: 5), + Text(item.value, + style: TextStyle( + fontSize: AppDims.fsH2, + fontWeight: FontWeight.w800, + letterSpacing: .2, + color: t.heading)), + if (item.delta != null) ...[ + const SizedBox(height: 3), + Text(item.delta!, + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: TextStyle(fontSize: AppDims.fsXs, color: deltaColor)), + ], + ], + ), + ); + // Material 自带(InkWell 水波 + golden 直挂无 Scaffold 场景) + return Material( + color: t.surface, + borderRadius: BorderRadius.circular(AppDims.rLg), + child: item.onTap == null + ? card + : InkWell( + onTap: item.onTap, + borderRadius: BorderRadius.circular(AppDims.rLg), + child: card, + ), + ); + } +} diff --git a/client/lib/widgets/ds/m_search_row.dart b/client/lib/widgets/ds/m_search_row.dart new file mode 100644 index 0000000..9b03b69 --- /dev/null +++ b/client/lib/widgets/ds/m_search_row.dart @@ -0,0 +1,151 @@ +// widgets/ds/m_search_row.dart — 移动搜索行(镜像原型 m-stock-*-list 搜索区终态): +// 搜索框(.m-search 42h, flex) + 纯文字状态钮(选中转 primary)+ 图标详细搜索钮(激活转 primary)。 +// 状态/详搜钮为可选;不传对应回调即不渲染(如库存屏只有搜索框)。 +import 'package:flutter/material.dart'; +import 'package:lucide_icons_flutter/lucide_icons.dart'; + +import '../../core/theme/app_dims.g.dart'; +import '../../core/theme/context_tokens.dart'; + +class MSearchRow extends StatelessWidget { + final TextEditingController? controller; + final String hint; + final ValueChanged? onChanged; + final ValueChanged? onSubmitted; + + /// 状态筛选钮当前文案(如「全部」「待审核」);null 不渲染该钮。 + final String? statusLabel; + + /// 状态钮是否处于筛选中(非「全部」)→ primary 高亮。 + final bool statusActive; + final VoidCallback? onStatusTap; + + /// 详细搜索钮是否有生效条件 → primary 高亮;[onFilterTap] null 不渲染该钮。 + final bool filterActive; + final VoidCallback? onFilterTap; + + const MSearchRow({ + super.key, + this.controller, + this.hint = '', + this.onChanged, + this.onSubmitted, + this.statusLabel, + this.statusActive = false, + this.onStatusTap, + this.filterActive = false, + this.onFilterTap, + }); + + @override + Widget build(BuildContext context) { + final t = context.tokens; + return Row(children: [ + // .m-search:42h / surface / border / r-md / 放大镜 17 + // Material 自带(TextField 需 Material 祖先 + golden 直挂无 Scaffold 场景) + Expanded( + child: Material( + color: t.surface, + shape: RoundedRectangleBorder( + side: BorderSide(color: t.border), + borderRadius: BorderRadius.circular(AppDims.rMd), + ), + child: Container( + height: 42, + padding: const EdgeInsets.symmetric(horizontal: 12), + child: Row(children: [ + Icon(LucideIcons.search, size: 17, color: t.muted), + const SizedBox(width: 8), + Expanded( + child: TextField( + controller: controller, + onChanged: onChanged, + onSubmitted: onSubmitted, + style: TextStyle(fontSize: AppDims.fsBody, color: t.text), + decoration: InputDecoration( + isCollapsed: true, + contentPadding: EdgeInsets.zero, + border: InputBorder.none, + enabledBorder: InputBorder.none, + focusedBorder: InputBorder.none, + filled: false, + hintText: hint, + hintStyle: + TextStyle(fontSize: AppDims.fsBody, color: t.faint), + ), + ), + ), + if (controller != null) + ValueListenableBuilder( + valueListenable: controller!, + builder: (context, value, _) { + if (value.text.isEmpty) return const SizedBox.shrink(); + return GestureDetector( + behavior: HitTestBehavior.opaque, + onTap: () { + controller!.clear(); + onChanged?.call(''); + onSubmitted?.call(''); + }, + child: Padding( + padding: const EdgeInsets.only(left: 6), + child: Icon(LucideIcons.x, size: 15, color: t.muted), + ), + ); + }, + ), + ]), + ), + ), + ), + // 状态筛选钮(纯文字,无箭头;筛选中转 primary) + if (statusLabel != null) ...[ + const SizedBox(width: 8), + _pillBtn( + t, + active: statusActive, + onTap: onStatusTap, + child: Text(statusLabel!, + style: TextStyle( + fontSize: AppDims.fsBody, + fontWeight: statusActive ? FontWeight.w600 : FontWeight.w500, + color: statusActive ? t.primary : t.text)), + ), + ], + // 详细搜索钮(图标;有生效条件转 primary) + if (onFilterTap != null) ...[ + const SizedBox(width: 8), + _pillBtn( + t, + active: filterActive, + onTap: onFilterTap, + child: Icon(LucideIcons.listFilter, + size: 18, color: filterActive ? t.primary : t.text), + ), + ], + ]); + } + + Widget _pillBtn(dynamic t, + {required bool active, VoidCallback? onTap, required Widget child}) { + // Material 自带(InkWell 水波 + golden 直挂无 Scaffold 场景) + return Material( + color: active ? t.brand50 : t.surface, + borderRadius: BorderRadius.circular(AppDims.rMd), + child: InkWell( + onTap: onTap, + borderRadius: BorderRadius.circular(AppDims.rMd), + child: Container( + height: 42, + padding: const EdgeInsets.symmetric(horizontal: 13), + alignment: Alignment.center, + decoration: BoxDecoration( + border: Border.all(color: active ? t.primary : t.border), + borderRadius: BorderRadius.circular(AppDims.rMd), + ), + child: child, + ), + ), + ); + } +} diff --git a/client/lib/widgets/ds/m_sheet.dart b/client/lib/widgets/ds/m_sheet.dart new file mode 100644 index 0000000..ba8ba63 --- /dev/null +++ b/client/lib/widgets/ds/m_sheet.dart @@ -0,0 +1,180 @@ +// widgets/ds/m_sheet.dart — 统一移动底部 sheet(镜像原型 mobile-atoms .m-sheet)。 +// 结构:grip(36×4) + 标题行(m-sheet-h:标题 + X) + 滚动体(m-sheet-b) + 可选底部操作条。 +// max 高 86vh、顶部 r-xl 圆角、SelectionArea 可选中复制;键盘弹出自动避让。 +import 'package:flutter/material.dart'; +import 'package:lucide_icons_flutter/lucide_icons.dart'; + +import '../../core/responsive/responsive.dart'; +import '../../core/theme/app_chrome.g.dart'; +import '../../core/theme/app_dims.g.dart'; +import '../../core/theme/context_tokens.dart'; +import '../../core/utils/dialog_util.dart'; + +/// 打开移动底部 sheet(对齐原型 mobile-shell openSheet)。 +/// - [title] 为 null 时只渲染 grip,内容自带头部(详情抽屉复用场景)。 +/// - [scrollable] true:内容包 SingleChildScrollView;false:内容自管布局 +/// (需自带定界高度,如 SizedBox(height:…),供 Column/Expanded 正常工作)。 +/// - [actions] 底部固定操作条(原型 .m-actionbar 形态:横排等分按钮)。 +Future showMSheet( + BuildContext context, { + String? title, + required WidgetBuilder builder, + bool scrollable = true, + double maxHeightFactor = 0.86, + List? actions, +}) { + return showModalBottomSheet( + context: context, + isScrollControlled: true, + useSafeArea: true, + backgroundColor: Colors.transparent, + barrierColor: AppChrome.scrim, // .m-sheet-mask --scrim + builder: (ctx) { + final t = ctx.tokens; + final maxH = MediaQuery.of(ctx).size.height * maxHeightFactor; + final viewInsets = MediaQuery.of(ctx).viewInsets.bottom; + return Padding( + // 键盘弹出时整体上移(sheet 内含输入框场景) + padding: EdgeInsets.only(bottom: viewInsets), + child: Container( + clipBehavior: Clip.antiAlias, + constraints: BoxConstraints(maxHeight: maxH), + decoration: BoxDecoration( + color: t.surface, + borderRadius: + const BorderRadius.vertical(top: Radius.circular(AppDims.rXl)), + ), + // sheet 是独立 overlay(在 app_shell 的 SelectionArea 之外)→ 自带一层 + child: SelectionArea( + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + // .grip + Center( + child: Container( + width: 36, + height: 4, + margin: const EdgeInsets.only(top: 8, bottom: 2), + decoration: BoxDecoration( + color: t.border, + borderRadius: BorderRadius.circular(AppDims.rPill), + ), + ), + ), + if (title != null) + Container( + padding: const EdgeInsets.fromLTRB(16, 10, 16, 12), + decoration: BoxDecoration( + border: + Border(bottom: BorderSide(color: t.borderSubtle)), + ), + child: Row(children: [ + Expanded( + child: Text(title, + style: TextStyle( + fontSize: AppDims.fsTitle, + fontWeight: FontWeight.w700, + color: t.heading)), + ), + InkWell( + onTap: () => Navigator.of(ctx).pop(), + child: Icon(LucideIcons.x, size: 20, color: t.muted), + ), + ]), + ), + Flexible( + child: scrollable + ? SingleChildScrollView( + padding: const EdgeInsets.fromLTRB(16, 14, 16, 14), + child: Builder(builder: builder), + ) + : Builder(builder: builder), + ), + if (actions != null) + Container( + padding: const EdgeInsets.fromLTRB(16, 12, 16, 12), + decoration: BoxDecoration( + border: Border(top: BorderSide(color: t.borderSubtle)), + ), + child: Row(children: [ + for (var i = 0; i < actions.length; i++) ...[ + if (i > 0) const SizedBox(width: 10), + Expanded(child: actions[i]), + ], + ]), + ), + ], + ), + ), + ), + ); + }, + ); +} + +/// 自适应弹层:窄屏走底部 sheet,宽屏走既有 showAppDialog(Dialog 卡)。 +/// 供各屏的筛选 / 轻表单 / 选项选择统一调用,减少 isMobile 样板分支。 +Future showAdaptiveSheet( + BuildContext context, { + required String title, + required WidgetBuilder builder, + List? actions, + double desktopWidth = 480, +}) { + if (context.isMobile) { + return showMSheet(context, + title: title, builder: builder, actions: actions); + } + return showAppDialog( + context: context, + builder: (ctx) { + final t = ctx.tokens; + return Dialog( + shape: + RoundedRectangleBorder(borderRadius: BorderRadius.circular(AppDims.rLg)), + child: SizedBox( + width: ctx.dialogWidth(desktopWidth), + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + Padding( + padding: const EdgeInsets.fromLTRB(20, 18, 20, 0), + child: Row(children: [ + Expanded( + child: Text(title, + style: TextStyle( + fontSize: AppDims.fsTitle, + fontWeight: FontWeight.w700, + color: t.heading)), + ), + InkWell( + onTap: () => Navigator.of(ctx).pop(), + child: Icon(LucideIcons.x, size: 18, color: t.muted), + ), + ]), + ), + Flexible( + child: SingleChildScrollView( + padding: const EdgeInsets.fromLTRB(20, 14, 20, 18), + child: Builder(builder: builder), + ), + ), + if (actions != null) + Padding( + padding: const EdgeInsets.fromLTRB(20, 0, 20, 18), + child: Row(children: [ + for (var i = 0; i < actions.length; i++) ...[ + if (i > 0) const SizedBox(width: 10), + Expanded(child: actions[i]), + ], + ]), + ), + ], + ), + ), + ); + }, + ); +} diff --git a/client/lib/widgets/ds/m_tab_bar.dart b/client/lib/widgets/ds/m_tab_bar.dart new file mode 100644 index 0000000..c8d1c6e --- /dev/null +++ b/client/lib/widgets/ds/m_tab_bar.dart @@ -0,0 +1,65 @@ +// widgets/ds/m_tab_bar.dart — 移动底部 tab 栏(镜像原型 mobile-atoms .m-tabbar / .m-tab)。 +// min-height 56 / surface 底 / border-top / SafeArea bottom; +// 项 = 22px 图标 + fs-xs 文案,激活 primary,未激活 muted。 +import 'package:flutter/material.dart'; + +import '../../core/theme/app_dims.g.dart'; +import '../../core/theme/context_tokens.dart'; + +class MTabItem { + final IconData icon; + final String label; + const MTabItem(this.icon, this.label); +} + +class MTabBar extends StatelessWidget { + final List items; + final int currentIndex; + final ValueChanged onTap; + const MTabBar({ + super.key, + required this.items, + required this.currentIndex, + required this.onTap, + }); + + @override + Widget build(BuildContext context) { + final t = context.tokens; + // Material 自带(InkWell 水波 + golden 直挂无 Scaffold 场景) + return Material( + color: t.surface, + shape: Border(top: BorderSide(color: t.border)), + child: SafeArea( + top: false, + child: SizedBox( + height: 56, + child: Row(children: [ + for (var i = 0; i < items.length; i++) + Expanded( + child: InkWell( + onTap: () => onTap(i), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Icon(items[i].icon, + size: 22, + color: i == currentIndex ? t.primary : t.muted), + const SizedBox(height: 3), + Text(items[i].label, + style: TextStyle( + fontSize: AppDims.fsXs, + fontWeight: i == currentIndex + ? FontWeight.w600 + : FontWeight.w400, + color: i == currentIndex ? t.primary : t.muted)), + ], + ), + ), + ), + ]), + ), + ), + ); + } +} diff --git a/client/lib/widgets/ds/status_icon_map.dart b/client/lib/widgets/ds/status_icon_map.dart new file mode 100644 index 0000000..0493c79 --- /dev/null +++ b/client/lib/widgets/ds/status_icon_map.dart @@ -0,0 +1,50 @@ +// widgets/ds/status_icon_map.dart — 状态词 → 徽章图标映射。 +// 单一真相源镜像:原型 icons.js 的 BADGE_ICON(2026-07-04 拍板:全系统圆点→代表图标), +// 逐词转录为 LucideIcons。新增状态先在原型 icons.js 登记,再同步到此表。 +import 'package:flutter/widgets.dart'; +import 'package:lucide_icons_flutter/lucide_icons.dart'; + +const Map kStatusIcons = { + // 库存状态 + '在售': LucideIcons.shoppingCart, // i-cart + '预警': LucideIcons.triangleAlert, // i-alert + '缺货': LucideIcons.x, // i-close + // 单据状态 + '草稿': LucideIcons.fileText, // i-ic06 + '待审核': LucideIcons.clock, // i-ic04 + '已审核': LucideIcons.check, // i-check + '已拒绝': LucideIcons.x, // i-close + '已通过': LucideIcons.check, // i-check + '已驳回': LucideIcons.x, // i-close + '部分退单': LucideIcons.undo2, // i-undo + '已退单': LucideIcons.undo2, // i-undo + '待定价': LucideIcons.japaneseYen, // i-yen + // 通用启停 / 往来类型 + '启用': LucideIcons.check, // i-check + '停用': LucideIcons.x, // i-close + '供应商': LucideIcons.box, // i-box + '客户': LucideIcons.user, // i-ic37 + '两者': LucideIcons.refreshCw, // i-refresh + // 角色 + '管理员': LucideIcons.shield, // i-shield-2 + '普通': LucideIcons.user, // i-ic37 + '只读': LucideIcons.eye, // i-eye + // 设备 / 会话 + '在线': LucideIcons.wifi, // i-wifi + '离线': LucideIcons.wifiOff, // i-wifi-off + // 盘点 + '进行中': LucideIcons.clock, // i-ic04 + '已完成': LucideIcons.check, // i-check + // 兑换券 + '未使用': LucideIcons.tag, // i-tag + '已兑换': LucideIcons.check, // i-check + '作废': LucideIcons.x, // i-close + // 财务 + '未结清': LucideIcons.clock, // i-ic04 + '已结清': LucideIcons.check, // i-check + '收款': LucideIcons.download, // i-download + '付款': LucideIcons.upload, // i-upload +}; + +/// 查状态词对应图标;未登记返回 null(调用方回退圆点形态)。 +IconData? statusIcon(String label) => kStatusIcons[label]; diff --git a/client/lib/widgets/finance_entry_dialog.dart b/client/lib/widgets/finance_entry_dialog.dart index 3464fbd..6be0e57 100644 --- a/client/lib/widgets/finance_entry_dialog.dart +++ b/client/lib/widgets/finance_entry_dialog.dart @@ -13,6 +13,7 @@ import '../providers/finance_provider.dart'; import '../providers/partner_provider.dart'; import 'date_picker_field.dart'; import 'ds/ds_atoms.dart'; +import 'ds/m_sheet.dart'; import 'searchable_option_field.dart'; import 'ds/ds_toast.dart'; @@ -22,6 +23,15 @@ Future showFinanceEntryDialog( String type = 'receipt', int? partnerId, }) { + // 窄屏:底部 sheet 形态(对齐原型移动 sheet 交互范式) + if (context.isMobile) { + return showMSheet( + context, + title: '登记收支', + builder: (_) => + _FinanceEntryDialog(type: type, partnerId: partnerId, asSheet: true), + ); + } return showAppDialog( context: context, builder: (_) => _FinanceEntryDialog(type: type, partnerId: partnerId), @@ -31,7 +41,11 @@ Future showFinanceEntryDialog( class _FinanceEntryDialog extends ConsumerStatefulWidget { final String type; final int? partnerId; - const _FinanceEntryDialog({required this.type, this.partnerId}); + + /// true → sheet 形态(外层 showMSheet 提供标题/滚动,按钮内联在表单尾部)。 + final bool asSheet; + const _FinanceEntryDialog( + {required this.type, this.partnerId, this.asSheet = false}); @override ConsumerState<_FinanceEntryDialog> createState() => @@ -85,12 +99,47 @@ class _FinanceEntryDialogState extends ConsumerState<_FinanceEntryDialog> { @override Widget build(BuildContext context) { - final partners = ref.watch(allPartnersProvider).valueOrNull?.data ?? []; + if (widget.asSheet) { + return Column( + mainAxisSize: MainAxisSize.min, + children: [ + _form(), + const SizedBox(height: 18), + Row(children: [ + Expanded( + child: DsButton('取消', + onPressed: + _saving ? null : () => Navigator.of(context).pop()), + ), + const SizedBox(width: 10), + Expanded( + flex: 2, + child: DsButton(_saving ? '保存中…' : '保存', + variant: DsBtnVariant.primary, + onPressed: _saving ? null : _save), + ), + ]), + ], + ); + } return AlertDialog( title: const Text('登记收支'), content: SizedBox( width: context.dialogWidth(420), - child: Form( + child: _form(), + ), + actions: [ + DsButton('取消', + onPressed: _saving ? null : () => Navigator.of(context).pop()), + DsButton(_saving ? '保存中…' : '保存', + variant: DsBtnVariant.primary, onPressed: _saving ? null : _save), + ], + ); + } + + Widget _form() { + final partners = ref.watch(allPartnersProvider).valueOrNull?.data ?? []; + return Form( key: _formKey, child: Column( mainAxisSize: MainAxisSize.min, @@ -151,14 +200,6 @@ class _FinanceEntryDialogState extends ConsumerState<_FinanceEntryDialog> { )), ], ), - ), - ), - actions: [ - DsButton('取消', - onPressed: _saving ? null : () => Navigator.of(context).pop()), - DsButton(_saving ? '保存中…' : '保存', - variant: DsBtnVariant.primary, onPressed: _saving ? null : _save), - ], ); } } diff --git a/client/lib/widgets/finance_partner_drawer.dart b/client/lib/widgets/finance_partner_drawer.dart index 6d32bdd..dc27e60 100644 --- a/client/lib/widgets/finance_partner_drawer.dart +++ b/client/lib/widgets/finance_partner_drawer.dart @@ -7,12 +7,14 @@ import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:intl/intl.dart'; import 'package:lucide_icons_flutter/lucide_icons.dart'; +import '../core/responsive/responsive.dart'; import '../core/theme/app_chrome.g.dart'; import '../core/theme/app_dims.g.dart'; import '../core/theme/context_tokens.dart'; import '../models/finance.dart'; import '../providers/finance_provider.dart'; import 'ds/ds_atoms.dart'; +import 'ds/m_sheet.dart'; import 'finance_entry_dialog.dart'; import 'write_guard.dart'; import '../core/theme/app_fonts.dart'; @@ -50,6 +52,18 @@ Future showFinancePartnerDrawer( BuildContext context, { required PartnerFinanceRow row, }) { + // 窄屏:底部 sheet 形态(对齐原型移动 sheet 交互范式) + if (context.isMobile) { + return showMSheet( + context, + title: null, + scrollable: false, + builder: (ctx) => SizedBox( + height: MediaQuery.of(ctx).size.height * 0.86, + child: _FinancePartnerDrawer(row: row), + ), + ); + } return showGeneralDialog( context: context, useRootNavigator: false, diff --git a/client/lib/widgets/kpi_card.dart b/client/lib/widgets/kpi_card.dart index 99b5822..e603166 100644 --- a/client/lib/widgets/kpi_card.dart +++ b/client/lib/widgets/kpi_card.dart @@ -132,15 +132,18 @@ class KpiCard extends StatelessWidget { /// 状态徽章(还原原型 `.badge`:圆点 + 文字同色 + 软底 pill)。 /// 用于库存「在售/预警/缺货」等派生状态;色与软底全走 token。 +/// [icon] 非空 → 图标徽章变体(原型 .badge.bi),默认圆点(存量 golden 零漂移)。 class StatusPill extends StatelessWidget { final String label; final Color color; final Color background; + final IconData? icon; const StatusPill( {super.key, required this.label, required this.color, - required this.background}); + required this.background, + this.icon}); @override Widget build(BuildContext context) { @@ -154,11 +157,14 @@ class StatusPill extends StatelessWidget { child: Row( mainAxisSize: MainAxisSize.min, children: [ - Container( - width: 6, - height: 6, - decoration: BoxDecoration(color: color, shape: BoxShape.circle), - ), + if (icon != null) + Icon(icon, size: 12, color: color) + else + Container( + width: 6, + height: 6, + decoration: BoxDecoration(color: color, shape: BoxShape.circle), + ), const SizedBox(width: 5), Text(label, style: TextStyle( diff --git a/client/lib/widgets/order_detail_drawer.dart b/client/lib/widgets/order_detail_drawer.dart index 975b433..cafdfa1 100644 --- a/client/lib/widgets/order_detail_drawer.dart +++ b/client/lib/widgets/order_detail_drawer.dart @@ -3,9 +3,11 @@ import 'dart:math' as math; import 'package:flutter/material.dart'; +import '../core/responsive/responsive.dart'; import '../core/theme/context_tokens.dart'; import '../core/theme/app_dims.g.dart'; import '../core/theme/app_fonts.dart'; +import 'ds/m_sheet.dart'; /// 右侧滑入抽屉呈现(对齐原型 .drawer / .drawer-mask)。 /// useRootNavigator:false → 只覆盖内容区(分支 Navigator),不盖侧栏/顶栏。 @@ -15,6 +17,20 @@ Future showOrderDetailDrawer( BuildContext context, { required WidgetBuilder builder, }) { + // 窄屏:底部 sheet 形态(原型 m-stock-*-list openOrder 详情 sheet); + // OrderDetailDrawer 自带「单号 + X」头部,title:null 只出 grip; + // scrollable:false + 定界高 → 内部 Column/Expanded 布局照常工作。 + if (context.isMobile) { + return showMSheet( + context, + title: null, + scrollable: false, + builder: (ctx) => SizedBox( + height: MediaQuery.of(ctx).size.height * 0.86, + child: Builder(builder: builder), + ), + ); + } return showGeneralDialog( context: context, useRootNavigator: false, diff --git a/client/lib/widgets/order_return_dialog.dart b/client/lib/widgets/order_return_dialog.dart index 6db230a..89e3589 100644 --- a/client/lib/widgets/order_return_dialog.dart +++ b/client/lib/widgets/order_return_dialog.dart @@ -6,6 +6,7 @@ import '../core/theme/context_tokens.dart'; import '../core/utils/dialog_util.dart'; import 'ds/ds_atoms.dart'; import 'ds/ds_toast.dart'; +import 'ds/m_sheet.dart'; /// 退单状态小徽章(none 返回 null 不显示)。partial=部分退单(amber),full=已退单(红)。 Widget? returnStateBadge(BuildContext context, String state) { @@ -66,6 +67,25 @@ Future showOrderReturnDialog({ required List lines, required Future Function(List itemIds) onSubmit, }) { + // 窄屏:底部 sheet 形态(原型 m-stock-*-list openReturn 退单 sheet) + if (context.isMobile) { + return showMSheet( + context, + title: null, + scrollable: false, + builder: (ctx) => SizedBox( + height: MediaQuery.of(ctx).size.height * 0.86, + child: _OrderReturnDialog( + title: title, + meta: meta, + isOut: isOut, + lines: lines, + onSubmit: onSubmit, + asSheet: true, + ), + ), + ); + } return showAppDialog( context: context, builder: (_) => _OrderReturnDialog( @@ -85,12 +105,16 @@ class _OrderReturnDialog extends StatefulWidget { final List lines; final Future Function(List itemIds) onSubmit; + /// true → sheet 形态(外层 showMSheet 提供 grip/圆角,本体不再包 Dialog)。 + final bool asSheet; + const _OrderReturnDialog({ required this.title, required this.meta, required this.isOut, required this.lines, required this.onSubmit, + this.asSheet = false, }); @override @@ -200,12 +224,22 @@ class _OrderReturnDialogState extends State<_OrderReturnDialog> { .where((l) => _staged.contains(l.itemId)) .fold(0, (s, l) => s + l.quantity); + // sheet 形态:外层已定界高,本体直接铺 Column(头/明细/底结构同 Dialog)。 + if (widget.asSheet) return _body(stagedQty); + return Dialog( shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10)), child: SizedBox( width: context.dialogWidth(820), height: 560, - child: Column( + child: _body(stagedQty), + ), + ); + } + + Widget _body(double stagedQty) { + return Builder( + builder: (context) => Column( children: [ // 头部 Padding( @@ -328,7 +362,6 @@ class _OrderReturnDialogState extends State<_OrderReturnDialog> { ), ), ], - ), ), ); } diff --git a/client/lib/widgets/partner_detail_drawer.dart b/client/lib/widgets/partner_detail_drawer.dart index bc9bffa..0db31b6 100644 --- a/client/lib/widgets/partner_detail_drawer.dart +++ b/client/lib/widgets/partner_detail_drawer.dart @@ -8,6 +8,7 @@ import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:intl/intl.dart'; import 'package:lucide_icons_flutter/lucide_icons.dart'; +import '../core/responsive/responsive.dart'; import '../core/theme/app_chrome.g.dart'; import '../core/theme/app_dims.g.dart'; import '../core/theme/context_tokens.dart'; @@ -15,6 +16,7 @@ import '../models/finance.dart'; import '../models/partner.dart'; import '../providers/partner_provider.dart'; import 'ds/ds_atoms.dart'; +import 'ds/m_sheet.dart'; import 'write_guard.dart'; import '../core/theme/app_fonts.dart'; import 'ds/ds_toast.dart'; @@ -27,6 +29,19 @@ Future showPartnerDetailDrawer( ({double recv, double pay})? balance, VoidCallback? onEdit, }) { + // 窄屏:底部 sheet 形态(原型 m-partners openP 详情 sheet) + if (context.isMobile) { + return showMSheet( + context, + title: null, + scrollable: false, + builder: (ctx) => SizedBox( + height: MediaQuery.of(ctx).size.height * 0.86, + child: _PartnerDetailDrawer( + partner: partner, balance: balance, onEdit: onEdit), + ), + ); + } return showGeneralDialog( context: context, useRootNavigator: false, diff --git a/client/lib/widgets/product_editor_drawer.dart b/client/lib/widgets/product_editor_drawer.dart index 0f6ccc5..899778e 100644 --- a/client/lib/widgets/product_editor_drawer.dart +++ b/client/lib/widgets/product_editor_drawer.dart @@ -12,6 +12,7 @@ import 'package:image_picker/image_picker.dart'; import 'package:lucide_icons_flutter/lucide_icons.dart'; import '../core/config/app_config.dart'; +import '../core/responsive/responsive.dart'; import '../core/theme/app_chrome.g.dart'; import '../core/theme/app_dims.g.dart'; import '../core/theme/context_tokens.dart'; @@ -21,6 +22,7 @@ import '../providers/product_option_provider.dart'; import '../providers/product_provider.dart'; import 'ds/ds_atoms.dart'; import 'ds/grid_combo_cell.dart'; +import 'ds/m_sheet.dart'; import 'searchable_option_field.dart'; import 'fullscreen_image_viewer.dart'; import 'write_guard.dart'; @@ -36,6 +38,23 @@ Future showProductEditorDrawer( double? cost, String? status, // 在售 / 预警 / 缺货 }) { + // 窄屏:底部 sheet 形态(原型 m-inventory openItem 内嵌公开页编辑) + if (context.isMobile) { + return showMSheet( + context, + title: null, + scrollable: false, + builder: (ctx) => SizedBox( + height: MediaQuery.of(ctx).size.height * 0.86, + child: _ProductEditorDrawer( + productId: productId, + qty: qty, + unit: unit, + cost: cost, + status: status), + ), + ); + } return showGeneralDialog( context: context, useRootNavigator: false, diff --git a/client/lib/widgets/status_badge.dart b/client/lib/widgets/status_badge.dart index 120538d..e9035d0 100644 --- a/client/lib/widgets/status_badge.dart +++ b/client/lib/widgets/status_badge.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import '../core/theme/context_tokens.dart'; +import 'ds/status_icon_map.dart'; import 'kpi_card.dart'; enum OrderStatus { draft, pending, approved, rejected } @@ -21,7 +22,11 @@ extension OrderStatusLabel on OrderStatus { class StatusBadge extends StatelessWidget { final OrderStatus status; - const StatusBadge(this.status, {super.key}); + + /// true → 图标徽章变体(icons.js BADGE_ICON 映射,移动端调用点显式启用); + /// 默认 false 保持圆点(桌面存量 golden 零漂移)。 + final bool withIcon; + const StatusBadge(this.status, {super.key, this.withIcon = false}); @override Widget build(BuildContext context) { @@ -33,6 +38,10 @@ class StatusBadge extends StatelessWidget { OrderStatus.approved => (t.success, t.successBg), OrderStatus.rejected => (t.danger, t.dangerBg), }; - return StatusPill(label: status.label, color: fg, background: bg); + return StatusPill( + label: status.label, + color: fg, + background: bg, + icon: withIcon ? statusIcon(status.label) : null); } } diff --git a/client/lib/widgets/theme_sheet.dart b/client/lib/widgets/theme_sheet.dart new file mode 100644 index 0000000..69187a6 --- /dev/null +++ b/client/lib/widgets/theme_sheet.dart @@ -0,0 +1,89 @@ +// widgets/theme_sheet.dart — 主题外观选择 sheet(镜像原型 mobile-shell openThemeSheet)。 +// m-opt 行式三主题(A 经典蓝 / B 琥珀 / C 酒窖)+ 四色 swatch 预览,选中出勾。 +// 写入 themeControllerProvider(持久化),与桌面 ThemePickerPill 同源。 +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:lucide_icons_flutter/lucide_icons.dart'; + +import '../core/theme/app_dims.g.dart'; +import '../core/theme/app_tokens.g.dart'; +import '../core/theme/context_tokens.dart'; +import '../core/theme/theme_controller.dart'; +import 'ds/m_sheet.dart'; + +// (key, 名称, 说明)——与桌面 _PrefPanel._themes / 原型 THEMES 同文案。 +const _themes = [ + ('a', 'A · 经典蓝', '浅色 · 默认'), + ('b', 'B · 琥珀', '深色'), + ('c', 'C · 酒窖', '暖浅色'), +]; + +/// 打开主题外观选择 sheet。 +Future showThemeSheet(BuildContext context) { + return showMSheet( + context, + title: '主题外观', + builder: (ctx) => Consumer(builder: (ctx, ref, _) { + final t = ctx.tokens; + final current = ref.watch(themeControllerProvider); + return Column(children: [ + for (var i = 0; i < _themes.length; i++) ...[ + Builder(builder: (_) { + final (key, name, desc) = _themes[i]; + final sel = key == current; + final preview = appTokensOf(key); + return InkWell( + onTap: () { + ref.read(themeControllerProvider.notifier).set(key); + Navigator.of(ctx).pop(); + }, + child: Container( + padding: const EdgeInsets.symmetric(vertical: 13), + decoration: BoxDecoration( + border: i == _themes.length - 1 + ? null + : Border(bottom: BorderSide(color: t.borderSubtle)), + ), + child: Row(children: [ + // 四色 swatch(primary/primary-dark/page/accent,与桌面 tcard 同序) + ClipRRect( + borderRadius: BorderRadius.circular(AppDims.rSm), + child: SizedBox( + width: 56, + height: 24, + child: Row(children: [ + Expanded(child: Container(color: preview.primary)), + Expanded(child: Container(color: preview.primaryDark)), + Expanded(child: Container(color: preview.page)), + Expanded(child: Container(color: preview.accent)), + ]), + ), + ), + const SizedBox(width: 12), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text(name, + style: TextStyle( + fontSize: AppDims.fsBody, + fontWeight: + sel ? FontWeight.w600 : FontWeight.w500, + color: sel ? t.primary : t.text)), + Text(desc, + style: TextStyle( + fontSize: AppDims.fsXs, color: t.muted)), + ], + ), + ), + if (sel) + Icon(LucideIcons.check, size: 18, color: t.primary), + ]), + ), + ); + }), + ], + ]); + }), + ); +} diff --git a/client/test/golden/app_shell_golden_test.dart b/client/test/golden/app_shell_golden_test.dart index f923fb2..fa0cc70 100644 --- a/client/test/golden/app_shell_golden_test.dart +++ b/client/test/golden/app_shell_golden_test.dart @@ -78,7 +78,8 @@ GoRouter _router() => GoRouter( initialLocation: '/inventory', routes: [ StatefulShellRoute.indexedStack( - builder: (ctx, state, shell) => AppShell(navigationShell: shell), + builder: (ctx, state, shell) => + AppShell(navigationShell: shell, location: state.matchedLocation), branches: [ _branch('/stock-in'), _branch('/stock-out'), diff --git a/client/test/golden/app_shell_mobile_golden_test.dart b/client/test/golden/app_shell_mobile_golden_test.dart new file mode 100644 index 0000000..644ded1 --- /dev/null +++ b/client/test/golden/app_shell_mobile_golden_test.dart @@ -0,0 +1,126 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:go_router/go_router.dart'; +import 'package:shared_preferences/shared_preferences.dart'; +import 'package:jiu_client/core/auth/auth_state.dart'; +import 'package:jiu_client/core/theme/themes.dart'; +import 'package:jiu_client/models/shop.dart'; +import 'package:jiu_client/providers/shop_provider.dart'; +import 'package:jiu_client/providers/license_provider.dart'; +import 'package:jiu_client/providers/update_provider.dart'; +import 'package:jiu_client/providers/connectivity_provider.dart'; +import 'package:jiu_client/providers/session_heartbeat.dart'; +import 'package:jiu_client/screens/shell/app_shell.dart'; +import 'package:jiu_client/widgets/app_status_bar.dart'; + +import '../support/golden_harness.dart'; + +/// 移动壳 golden × 三主题(390×844 @2x):窄屏顶栏(标题 + 主题/铃/头像) +/// + 底部 5 tab(库存/入库/出库/财务/我的,库存激活)——对齐原型移动壳 +/// mobile-shell.js(m-top + m-tabbar)。二级屏返回箭头形态另see me golden。 +/// 更新基准:flutter test --update-goldens test/golden/app_shell_mobile_golden_test.dart + +class _FakeAuth extends AuthNotifier { + _FakeAuth() { + state = const AuthState( + user: AuthUser( + accessToken: 't', + refreshToken: 'r', + id: 1, + username: 'wang', + realName: '王经理', + shopNo: 'DSJH-001', + shopId: 1, + role: 'admin'), + ); + } +} + +class _FakeUpdate extends UpdateNotifier { + @override + Future build() async => null; +} + +class _FakeLicense extends LicenseNotifier { + @override + Future build() async => null; +} + +const _shop = ShopInfo( + id: 1, + code: 'DSJH-001', + name: '鼎晟酒行', + address: '浙江省杭州市', + phone: '0571-88886666', + managerName: '王经理'); + +List _overrides() => [ + authStateProvider.overrideWith((ref) => _FakeAuth()), + shopInfoProvider.overrideWith((ref) => _shop), + licenseProvider.overrideWith(() => _FakeLicense()), + updateProvider.overrideWith(() => _FakeUpdate()), + connectivityProvider + .overrideWith((ref) => ConnectivityNotifier(skipInit: true)), + sessionHeartbeatProvider.overrideWith((ref) => SessionHeartbeat(ref)), + appVersionProvider.overrideWith((ref) => 'v1.0.72'), + isReadonlyProvider.overrideWithValue(false), + ]; + +StatefulShellBranch _branch(String path) => StatefulShellBranch(routes: [ + GoRoute(path: path, builder: (_, __) => const SizedBox.expand()), + ]); + +GoRouter _router() => GoRouter( + initialLocation: '/inventory', + routes: [ + StatefulShellRoute.indexedStack( + builder: (ctx, state, shell) => + AppShell(navigationShell: shell, location: state.matchedLocation), + branches: [ + _branch('/stock-in'), + _branch('/stock-out'), + _branch('/inventory'), + _branch('/finance'), + _branch('/partners'), + _branch('/products'), + _branch('/devices'), + _branch('/settings'), + _branch('/about'), + _branch('/me'), + ], + ), + ], + ); + +void main() { + TestWidgetsFlutterBinding.ensureInitialized(); + SharedPreferences.setMockInitialValues({}); + AppStatusBar.clock = () => DateTime(2026, 7, 13, 9, 30, 15); + AppStatusBar.ticking = false; + + for (final theme in const ['a', 'b', 'c']) { + testWidgets('app shell mobile · theme $theme', (tester) async { + await ensureGoldenFonts(); + tester.view.physicalSize = const Size(780, 1688); // 390×844 @2x + tester.view.devicePixelRatio = 2.0; + addTearDown(tester.view.resetPhysicalSize); + addTearDown(tester.view.resetDevicePixelRatio); + + await tester.pumpWidget(ProviderScope( + overrides: _overrides(), + child: MaterialApp.router( + debugShowCheckedModeBanner: false, + theme: withGoldenFont(buildTheme(theme)), + routerConfig: _router(), + ), + )); + await tester.pumpAndSettle(); + + await expectLater( + find.byType(MaterialApp), + matchesGoldenFile('goldens/app_shell_mobile_$theme.png'), + ); + }); + } +} diff --git a/client/test/golden/goldens/app_shell_mobile_a.png b/client/test/golden/goldens/app_shell_mobile_a.png new file mode 100644 index 0000000000000000000000000000000000000000..97c505651a36f1e5b96fd4a5f4fb9a245d43a346 GIT binary patch literal 26309 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 t+ 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 literal 0 HcmV?d00001 diff --git a/client/test/golden/goldens/app_shell_mobile_b.png b/client/test/golden/goldens/app_shell_mobile_b.png new file mode 100644 index 0000000000000000000000000000000000000000..7b3b7e918386f12f911d02bbb4f9d253e3f80e7e GIT binary patch literal 27462 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 literal 0 HcmV?d00001 diff --git a/client/test/golden/goldens/app_shell_mobile_c.png b/client/test/golden/goldens/app_shell_mobile_c.png new file mode 100644 index 0000000000000000000000000000000000000000..e74b412608f9634ba46a953ccf294794febe7c62 GIT binary patch literal 26413 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 Jmvv4FO#o79HBaP^2FEd<*Kp@mg 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 literal 0 HcmV?d00001 diff --git a/client/test/golden/goldens/me_b.png b/client/test/golden/goldens/me_b.png new file mode 100644 index 0000000000000000000000000000000000000000..cec5465aa6386c61f7bde910f664db63d9b75aed GIT binary patch literal 72184 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 const MeScreen(), + goldenPrefix: 'me', + logical: const Size(390, 844), + overrides: () => [ + authStateProvider.overrideWith((ref) => _FakeAuth()), + shopInfoProvider.overrideWith((ref) => _shop), + ], + ); +} diff --git a/client/test/support/shell_harness.dart b/client/test/support/shell_harness.dart index cb23931..d6d9ed0 100644 --- a/client/test/support/shell_harness.dart +++ b/client/test/support/shell_harness.dart @@ -79,7 +79,8 @@ GoRouter _router(String initialPath, WidgetBuilder screen) => GoRouter( initialLocation: initialPath, routes: [ StatefulShellRoute.indexedStack( - builder: (ctx, state, shell) => AppShell(navigationShell: shell), + builder: (ctx, state, shell) => + AppShell(navigationShell: shell, location: state.matchedLocation), branches: [ for (final p in const [ '/stock-in', diff --git a/client/test/user_menu_width_test.dart b/client/test/user_menu_width_test.dart index 85aa599..35ab95d 100644 --- a/client/test/user_menu_width_test.dart +++ b/client/test/user_menu_width_test.dart @@ -55,7 +55,8 @@ GoRouter _router() => GoRouter( initialLocation: '/inventory', routes: [ StatefulShellRoute.indexedStack( - builder: (ctx, state, shell) => AppShell(navigationShell: shell), + builder: (ctx, state, shell) => + AppShell(navigationShell: shell, location: state.matchedLocation), branches: [ for (final p in const [ '/stock-in',