Files
pj_supermarket_cloud/test/terminal_toolbar_test.dart
T
2026-09-10 13:51:51 +08:00

85 lines
2.7 KiB
Dart

import 'package:ducafe_ui_core/ducafe_ui_core.dart';
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:forui/forui.dart';
import 'package:pj_supermarket_cloud/common/index.dart';
/// 复刻 app.dart 的最小主题环境:ScreenUtil 按设计稿 1920x1080 初始化,
/// Forui 主题按字体档位缩放,与真机设置页的工具栏渲染条件一致。
Widget _harness({required double sizeScalar}) {
final base = FThemes.zinc.light;
return ScreenUtilInit(
designSize: const Size(1920, 1080),
minTextAdapt: true,
builder: (_, __) => FTheme(
data: FThemeData.inherit(
colorScheme: base.colorScheme,
typography: base.typography.scale(sizeScalar: sizeScalar),
style: base.style,
),
child: MaterialApp(
home: Scaffold(
body: Center(
child: Row(
mainAxisSize: MainAxisSize.min,
children: [
TerminalToolbarTextField(
controller: TextEditingController(),
hint: '姓名/编号/卡号/手机号',
width: 300,
),
TerminalToolbarButton(label: '重置', onTap: () {}),
TerminalToolbarButton(
label: '搜索',
style: TerminalToolbarButtonStyle.primary,
onTap: () {},
),
],
),
),
),
),
),
);
}
void main() {
tearDown(() {
XfjDesignTokens.applyThemeMetrics(
cardRadius: 12,
controlRadius: 12,
buttonSizeScale: 1,
);
});
testWidgets('工具栏输入框在全部字体与按钮档位下与按钮等高且无溢出', (tester) async {
for (final fontSize in SettingGlobalFontSize.values) {
for (final buttonSize in SettingButtonSize.values) {
XfjDesignTokens.applyThemeMetrics(
cardRadius: 12,
controlRadius: 12,
buttonSizeScale: buttonSize.scale,
);
await tester.pumpWidget(_harness(sizeScalar: fontSize.fontSize));
await tester.pump();
final combo = '字体${fontSize.title}+按钮${buttonSize.title}';
expect(
tester.takeException(),
isNull,
reason: '$combo 组合出现布局溢出',
);
final inputHeight = tester.getSize(find.byType(FTextField)).height;
final buttonHeight = tester
.getSize(find.byType(TerminalToolbarButton).first)
.height;
expect(
inputHeight,
buttonHeight,
reason: '$combo 组合输入框与按钮高度不一致',
);
}
}
});
}