import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_test/flutter_test.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/screens/devices/label_template_editor_screen.dart'; /// 冒烟测试:编辑器屏在真 provider 下能构建/挂载(本屏无法走 golden——左预览用 /// `Picture.toImage` 直画光栅化,pumpAndSettle 骨架驱动不了,见 CONTRACT 块4)。 /// 这里只验证脚手架/面板正常渲染(预览停在静态占位,不阻塞 settle)。 const _shop = ShopInfo( id: 1, code: 'DSJH-001', name: '鼎晟酒行', address: '浙江省杭州市', phone: '0571-88886666', managerName: '王经理', ); void main() { testWidgets('标签模板编辑器 · 挂载渲染面板', (tester) async { tester.view.physicalSize = const Size(1280, 900); tester.view.devicePixelRatio = 1.0; addTearDown(tester.view.resetPhysicalSize); addTearDown(tester.view.resetDevicePixelRatio); await tester.pumpWidget(ProviderScope( overrides: [shopInfoProvider.overrideWith((ref) => _shop)], child: MaterialApp( debugShowCheckedModeBanner: false, theme: buildTheme('a'), home: const Scaffold(body: LabelTemplateEditorScreen()), ), )); await tester.pumpAndSettle(); expect(find.text('标签模板编辑器'), findsOneWidget); expect(find.text('显示字段'), findsOneWidget); expect(find.text('打印参数'), findsOneWidget); // 头部「打印」按钮(打印当前预览) expect(find.text('打印'), findsOneWidget); expect(find.text('模板'), findsWidgets); // 字段行齐全(品名 + 二维码等) expect(find.text('品名'), findsOneWidget); expect(find.text('二维码'), findsOneWidget); expect(tester.takeException(), isNull); }); }