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