feat(app): 海报弹层内中/English 切换——二维码海报支持英文版
- 弹层顶部 SegmentTabs(light) 两档,默认跟 App 语言前缀;只影响海报内容 与二维码 ?lang=,不动 App 语言设置 - 提示文案经 lookupAppLocalizations 按海报语言取(arb 中英双全,零硬编码) - 标题/场地/地址复用相册多语言回退链按海报语言取 - QrImageView 补 semanticsLabel(读屏原本无名,兼作测试断言口) Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
@@ -4,7 +4,8 @@
|
||||
/// 可选中链接)、链接携带正确相册 token 与 `?lang=` 语言参数、Copy link
|
||||
/// 主操作写剪贴板 + 已复制提示、Open in browser 次操作经注入替身启动器
|
||||
/// 打开并退出页面、未公开相册显示「该链接目前无法公开浏览」琥珀提示
|
||||
/// (公开相册不显示)。
|
||||
/// (公开相册不显示)、海报弹层内「中文/English」切换(默认跟 App 语言,
|
||||
/// 提示文案/相册标题/二维码 lang 随切换,弹层 chrome 仍跟 App 语言)。
|
||||
library;
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
@@ -85,6 +86,41 @@ void main() {
|
||||
expect(find.text('2026/9/18'), findsOneWidget);
|
||||
});
|
||||
|
||||
testWidgets('海报语言切换:默认跟 App 语言,切中文后提示/标题/二维码随之', (
|
||||
tester,
|
||||
) async {
|
||||
await pumpPage(tester);
|
||||
await tester.tap(find.text('Generate QR poster'));
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
// 默认 English 档(App 语言 en):英文提示 + lang=en 的二维码
|
||||
// (qr_flutter 4.1 无公开 data getter,经 semanticsLabel 断言编码内容)。
|
||||
expect(find.text('Scan to view photos'), findsOneWidget);
|
||||
expect(
|
||||
tester.widget<QrImageView>(find.byType(QrImageView)).semanticsLabel,
|
||||
'http://10.0.2.2:5175/a/$token?lang=en',
|
||||
reason: '二维码 lang 跟海报语言(默认=App 语言前缀)',
|
||||
);
|
||||
// 两档切换(语言名以自身语言书写,与语言选择面板同约定)。
|
||||
expect(find.text('中文'), findsOneWidget);
|
||||
expect(find.text('English'), findsOneWidget);
|
||||
// 英文档标题取英文翻译(中文翻译不出现在海报上)。
|
||||
expect(find.text('开幕晚宴'), findsNothing);
|
||||
|
||||
// 切「中文」:提示/标题换中文、二维码 lang=zh-CN。
|
||||
await tester.tap(find.text('中文'));
|
||||
await tester.pumpAndSettle();
|
||||
expect(find.text('扫码查看照片'), findsOneWidget);
|
||||
expect(find.text('Scan to view photos'), findsNothing);
|
||||
expect(find.text('开幕晚宴'), findsOneWidget);
|
||||
expect(
|
||||
tester.widget<QrImageView>(find.byType(QrImageView)).semanticsLabel,
|
||||
'http://10.0.2.2:5175/a/$token?lang=zh-CN',
|
||||
);
|
||||
// 弹层 chrome(标题/下载按钮)不随海报语言切换,仍跟 App 语言。
|
||||
expect(find.text('Download poster image'), findsOneWidget);
|
||||
});
|
||||
|
||||
testWidgets('Copy link(主操作)→ 剪贴板收到带 lang 的 URL + 已复制提示',
|
||||
(tester) async {
|
||||
final clipboardCalls = <MethodCall>[];
|
||||
|
||||
Reference in New Issue
Block a user