195b4d22e7
打印当前预览:复用出签弹窗 LabelPreviewDialog(选打印机/份数),传入正在 编辑的模板 _t 与示例数据。预览/打印共用 _sampleLabel() 抽出示例 LabelData。 L1 图标单源:新登记 i-printer(Lucide printer)到原型 icons.js + 官网 icons.njk 两端(check-l1-sync 同集要求),原型头部 use #i-printer。 design-first:原型 label-template-editor.html 同步加「打印」按钮 + printTpl() 占位,与真实屏同提交。smoke test 增头部「打印」按钮断言。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Bupi8Kdqkfx2N5acFsHTx5
50 lines
2.0 KiB
Dart
50 lines
2.0 KiB
Dart
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);
|
|
});
|
|
}
|