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 = { 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> 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 _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, ); }