Files
biz_xfj_cloud/test/common/toast_widget_test.dart
T
2026-07-30 17:06:17 +08:00

51 lines
1.8 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:get/get.dart';
import 'package:pj_supermarket_cloud/common/index.dart';
/// 验证公共 Toast 在终端横屏和大字号设置下不会因长异常文案产生布局溢出。
void main() {
testWidgets('1280x720 大字号下超长错误提示自动换行且不溢出', (tester) async {
await tester.binding.setSurfaceSize(const Size(1280, 720));
addTearDown(() => tester.binding.setSurfaceSize(null));
final baseTheme = FThemes.zinc.light;
final terminalTheme = FThemeData.inherit(
colorScheme: baseTheme.colorScheme,
typography: baseTheme.typography.scale(sizeScalar: 1.4),
style: baseTheme.style,
);
await tester.pumpWidget(
ScreenUtilInit(
designSize: const Size(1920, 1080),
minTextAdapt: true,
splitScreenMode: true,
builder: (_, __) => GetMaterialApp(
home: const Scaffold(),
builder: (_, child) => FTheme(
data: terminalTheme,
child: child!,
),
),
),
);
const message =
'DioException [bad response]: The server returned HTTP 500. '
'设备不存在或不属于当前租户,请在基本信息重新绑定设备后再次执行自动更新。'
'完整异常和堆栈应保留在任务日志中,界面只显示可恢复的操作提示。';
Toast.error(msg: message);
await tester.pump();
expect(find.text(message), findsOneWidget);
expect(tester.getSize(find.text(message)).width, lessThan(1280 * 0.82));
expect(tester.takeException(), isNull);
await tester.pump(const Duration(seconds: 4));
Get.reset();
});
}