feat(app): share redesign — card share (system), QR poster (banner+title+time+venue+QR, downloadable), copy link
- 三方式(用户需求):①卡片模式默认=系统分享面板(share_plus SharePlus. instance,微信/其他应用,文本=标题+链接)②生成二维码=海报弹层——顶部 宣传图(banner→cover→品牌占位回退)+ 活动标题 + 时间 + 地址 + 二维码, 「下载海报图」RepaintBoundary 3x 渲染 PNG → gal 存相册 ③复制链接 - 依赖 share_plus + gal;分享/保存均 Provider 注入(测试替身) - 测试适配三方式结构 + 海报弹层断言(397/397 全绿、analyze 0) Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
@@ -63,16 +63,25 @@ void main() {
|
||||
findsOneWidget,
|
||||
reason: '开始时间(相册时区;结束未定不伪造区间)+ 场地(展示回退链)',
|
||||
);
|
||||
// 二维码真实生成 + 扫码说明 + 可选中链接。
|
||||
expect(find.byType(QrImageView), findsOneWidget);
|
||||
expect(find.text('Scan to view photos'), findsOneWidget);
|
||||
// 测试环境 URL:默认 VIEWER_BASE + 正确 token + en 语言参数。
|
||||
// UI06 三方式:系统分享(默认)/ 生成二维码海报 / 复制链接。
|
||||
expect(find.text('Share to WeChat / other apps'), findsOneWidget);
|
||||
expect(find.text('Generate QR poster'), findsOneWidget);
|
||||
expect(find.text('Copy link'), findsOneWidget);
|
||||
// 可选中链接(二维码与复制共用同一 URL)。
|
||||
final url = 'http://10.0.2.2:5175/a/$token?lang=en';
|
||||
expect(
|
||||
tester.widget<SelectableText>(find.byType(SelectableText)).data,
|
||||
url,
|
||||
reason: '二维码与复制共用同一 URL(?lang= 随 App 语言)',
|
||||
reason: '链接文本(?lang= 随 App 语言)',
|
||||
);
|
||||
|
||||
// 点「生成二维码海报」→ 弹层:标题/时间/地址/二维码/下载按钮。
|
||||
await tester.tap(find.text('Generate QR poster'));
|
||||
await tester.pumpAndSettle();
|
||||
expect(find.byType(QrImageView), findsOneWidget);
|
||||
expect(find.text('Scan to view photos'), findsOneWidget);
|
||||
expect(find.text('Download poster image'), findsOneWidget);
|
||||
expect(find.text('2026/9/18 14:30'), findsOneWidget);
|
||||
});
|
||||
|
||||
testWidgets('Copy link(主操作)→ 剪贴板收到带 lang 的 URL + 已复制提示',
|
||||
|
||||
Reference in New Issue
Block a user