4287f5a876
- 往来单位:窄屏隐藏页内大标题(标题在壳顶栏);MSearchRow 搜索行; 类型 pills 全部/供应商/客户/两者(两者=客户端过滤,服务端 FIND_IN_SET 无独立值); 卡片流类型+状态徽章换图标变体、mc-sub mono 编码 - 基础数据:窄屏隐藏大标题;各 tab 搜索行换 MSearchRow(清空 × 并入,重置钮撤); 档案/字典卡片副行 mono 编码;系列/规格/仓库 新增编辑窄屏走 showMSheet 底部 sheet 轻表单 - 商品详情:窄屏 padding 收紧 sp4;信息卡 Wrap→单列;图片缩略图行窄屏横滚防溢出; 二维码弹窗宽度走 context.dialogWidth - golden:新增 m_partners / m_products / m_products_series(390×844 @2x 三主题); 重生成既有 partners_mobile / products_archive_mobile 基准(桌面 golden 零漂移) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
110 lines
3.2 KiB
Dart
110 lines
3.2 KiB
Dart
import 'package:flutter/material.dart';
|
||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||
import 'package:flutter_test/flutter_test.dart';
|
||
import 'package:shared_preferences/shared_preferences.dart';
|
||
import 'package:jiu_client/core/models/page_result.dart';
|
||
import 'package:jiu_client/core/auth/auth_state.dart';
|
||
import 'package:jiu_client/models/partner.dart';
|
||
import 'package:jiu_client/providers/partner_provider.dart';
|
||
import 'package:jiu_client/screens/partners/partners_screen.dart';
|
||
|
||
import '../support/golden_harness.dart';
|
||
|
||
/// 往来单位窄屏 golden × 三主题(390×844 @2x,对齐移动原型 m-partners.html):
|
||
/// 页内大标题隐藏(标题在壳顶栏)+ MSearchRow 搜索行 + 类型 pills
|
||
/// (全部/供应商/客户/两者)+ 卡片流(类型/状态图标徽章、mono 编码副行)。
|
||
/// 更新基准:flutter test --update-goldens test/golden/partners_mobile_golden_test.dart
|
||
|
||
// 行数据对齐 m-partners.html 的 PARTNERS(供应商/客户/两者、启用/停用齐备)。
|
||
const _partners = [
|
||
Partner(
|
||
id: 1,
|
||
code: 'GYS001',
|
||
name: '鼎晟供应链',
|
||
type: 'supplier',
|
||
contact: '张伟',
|
||
phone: '138-0011-2233'),
|
||
Partner(
|
||
id: 2,
|
||
code: 'KH002',
|
||
name: '城东烟酒行',
|
||
type: 'customer',
|
||
contact: '李建国',
|
||
phone: '139-2200-7788'),
|
||
Partner(
|
||
id: 3,
|
||
code: 'GYS003',
|
||
name: '贵州茅台经销',
|
||
type: 'supplier',
|
||
contact: '王芳',
|
||
phone: '137-6655-4321'),
|
||
Partner(
|
||
id: 4,
|
||
code: 'KH004',
|
||
name: '金樽会所',
|
||
type: 'customer',
|
||
contact: '陈静',
|
||
phone: '136-2211-9900'),
|
||
Partner(
|
||
id: 5,
|
||
code: 'KH005',
|
||
name: '喜宴婚庆',
|
||
type: 'customer',
|
||
contact: '周丽',
|
||
phone: '139-3344-5566',
|
||
status: 'disabled'),
|
||
Partner(
|
||
id: 6,
|
||
code: 'GYS006',
|
||
name: '川酒集团批发',
|
||
type: 'supplier,customer',
|
||
contact: '赵明',
|
||
phone: '138-7766-5544'),
|
||
];
|
||
|
||
// 原型 bal(应收/应付)
|
||
const _balances = <int, ({double recv, double pay})>{
|
||
1: (recv: 0, pay: 52800),
|
||
2: (recv: 86200, pay: 0),
|
||
3: (recv: 0, pay: 0),
|
||
4: (recv: 41000, pay: 0),
|
||
5: (recv: 0, pay: 0),
|
||
6: (recv: 0, pay: 0),
|
||
};
|
||
|
||
class _FakePartnersNotifier extends PartnerListNotifier {
|
||
@override
|
||
Future<PageResult<Partner>> build() async =>
|
||
const PageResult(data: _partners, total: 6, page: 1, pageSize: 1000);
|
||
@override
|
||
void setPage(int page) {}
|
||
@override
|
||
void setPageSize(int pageSize) {}
|
||
@override
|
||
void setKeyword(String keyword) {}
|
||
@override
|
||
void setType(String? t) {}
|
||
@override
|
||
void reload() {}
|
||
}
|
||
|
||
List<Override> _overrides() => [
|
||
partnersScreenProvider.overrideWith(() => _FakePartnersNotifier()),
|
||
partnerBalancesProvider.overrideWith((ref) async => _balances),
|
||
isReadonlyProvider.overrideWithValue(false),
|
||
];
|
||
|
||
void main() {
|
||
TestWidgetsFlutterBinding.ensureInitialized();
|
||
SharedPreferences.setMockInitialValues({});
|
||
|
||
goldenAcrossThemes(
|
||
'partners 窄屏(手机视口)',
|
||
goldenPrefix: 'm_partners',
|
||
child: () => const Scaffold(body: PartnersScreen()),
|
||
overrides: _overrides,
|
||
logical: const Size(390, 844),
|
||
dpr: 2,
|
||
);
|
||
}
|