feat: 故事加载页接收并传递封面 URL

- 新增 storyCoverUrl 变量,从 SSE done 事件中读取 cover_url
- 新增 cover SSE 阶段的进度展示(正在绘制故事封面...)
- 将 cover_url 传递给 StoryDetailPage 和返回结果

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
repair-agent 2026-03-02 15:33:16 +08:00
parent d741fd4f5c
commit 51f994a2cc

View File

@ -72,6 +72,7 @@ class _StoryLoadingPageState extends State<StoryLoadingPage> {
String buffer = ''; String buffer = '';
String? storyTitle; String? storyTitle;
String? storyContent; String? storyContent;
String storyCoverUrl = '';
await for (final chunk in response.stream.transform(utf8.decoder)) { await for (final chunk in response.stream.transform(utf8.decoder)) {
buffer += chunk; buffer += chunk;
@ -109,9 +110,13 @@ class _StoryLoadingPageState extends State<StoryLoadingPage> {
case 'parsing': case 'parsing':
_updateProgress(progress / 100, '正在编制最后的魔法...'); _updateProgress(progress / 100, '正在编制最后的魔法...');
break; break;
case 'cover':
_updateProgress(progress / 100, '正在绘制故事封面...');
break;
case 'done': case 'done':
storyTitle = event['title'] as String? ?? '卡皮巴拉的故事'; storyTitle = event['title'] as String? ?? '卡皮巴拉的故事';
storyContent = event['content'] as String? ?? ''; storyContent = event['content'] as String? ?? '';
storyCoverUrl = event['cover_url'] as String? ?? '';
_updateProgress(1.0, '大功告成!'); _updateProgress(1.0, '大功告成!');
break; break;
case 'error': case 'error':
@ -142,6 +147,7 @@ class _StoryLoadingPageState extends State<StoryLoadingPage> {
story: { story: {
'title': storyTitle, 'title': storyTitle,
'content': storyContent, 'content': storyContent,
'cover_url': storyCoverUrl,
}, },
), ),
), ),
@ -154,6 +160,7 @@ class _StoryLoadingPageState extends State<StoryLoadingPage> {
'action': 'saved', 'action': 'saved',
'title': storyTitle, 'title': storyTitle,
'content': storyContent, 'content': storyContent,
'cover_url': storyCoverUrl,
}); });
} else { } else {
Navigator.of(context).pop(result); Navigator.of(context).pop(result);