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/models/warehouse.dart'; import 'package:jiu_client/providers/warehouse_provider.dart'; import 'package:jiu_client/providers/partner_provider.dart'; import 'package:jiu_client/screens/stock_out/stock_out_form_screen.dart'; import '../support/golden_harness.dart'; /// design-distill 阶段4:出库录单表单(旗舰屏)golden × 三主题。 /// 锁住 单据信息卡 + 可编辑明细网格 + 底栏 随主题换色(含斑马行 token)。 /// 更新基准:flutter test --update-goldens test/golden/stock_out_form_golden_test.dart const _warehouses = [ Warehouse(id: 1, name: '主仓', isDefault: true), Warehouse(id: 2, name: '二号仓', isDefault: false), ]; class _FakeWarehouses extends WarehouseListNotifier { @override Future> build() async => _warehouses; } class _FakeCustomers extends PartnerListNotifier { @override Future> build() async => const PageResult(data: [], total: 0, page: 1, pageSize: 20); @override void setPage(int page) {} @override void setPageSize(int pageSize) {} @override void setKeyword(String keyword) {} @override void reload() {} } List _overrides() => [ warehouseListProvider.overrideWith(() => _FakeWarehouses()), allPartnersProvider.overrideWith(() => _FakeCustomers()), isReadonlyProvider.overrideWithValue(false), ]; void main() { TestWidgetsFlutterBinding.ensureInitialized(); SharedPreferences.setMockInitialValues({}); goldenAcrossThemes( 'stock-out form 录单(桌面)', goldenPrefix: 'stock_out_form', child: () => const Scaffold(body: StockOutFormScreen()), overrides: _overrides, logical: const Size(1280, 920), ); goldenAcrossThemes( 'stock-out form 录单(移动)', goldenPrefix: 'stock_out_form_mobile', child: () => const Scaffold(body: StockOutFormScreen()), overrides: _overrides, logical: const Size(390, 1400), ); }