fix:按html的假数据demo

This commit is contained in:
jingyun
2026-06-05 11:12:55 +08:00
parent b4272b5ec9
commit 9727b906c6
28 changed files with 2159 additions and 711 deletions
+24 -10
View File
@@ -9,6 +9,7 @@ import '../../routing/app_routes.dart';
import '../../theme/wise_tokens.dart';
import '../../widgets/badges.dart';
import '../../widgets/mini_player.dart';
import '../../widgets/page_header.dart';
import '../../widgets/states.dart';
import '../shared/report_card_widget.dart';
@@ -27,7 +28,13 @@ class FeedPage extends HookConsumerWidget {
final ReportDataSource dataSource;
final void Function(AudioItem item) onPlay;
final PlayerStateModel player;
final void Function(String audioId, String reportId, String title, int durationSec)? onStartModuleAudio;
final void Function(
String audioId,
String reportId,
String title,
int durationSec,
)?
onStartModuleAudio;
final VoidCallback? onToggleAudio;
final void Function(int delta)? onSeekAudio;
final VoidCallback? onSpeed;
@@ -45,19 +52,27 @@ class FeedPage extends HookConsumerWidget {
),
data: (items) {
final currentTopic = topic.value;
final topics = ['全部', ...{for (final item in items) ...item.topics}];
final topics = [
'全部',
...{for (final item in items) ...item.topics},
];
final visible = currentTopic == '全部'
? items
: items.where((item) => item.topics.contains(currentTopic)).toList();
: items
.where((item) => item.topics.contains(currentTopic))
.toList();
if (items.isEmpty) {
return const EmptyState(
title: '暂无可推荐的研报解读',
message: '稍后再来看看最新内容',
);
return const EmptyState(title: '暂无可推荐的研报解读', message: '稍后再来看看最新内容');
}
return ListView(
padding: const EdgeInsets.all(WiseSpacing.x4),
padding: const EdgeInsets.fromLTRB(
WiseSpacing.x4,
4,
WiseSpacing.x4,
16,
),
children: [
const PageHeader(title: '研听', subtitle: '全球机构研报中文解读'),
SingleChildScrollView(
scrollDirection: Axis.horizontal,
child: Row(
@@ -98,8 +113,7 @@ class FeedPage extends HookConsumerWidget {
onPlayTap: () => _playFromReport(onPlay, visible.first),
),
const SizedBox(height: WiseSpacing.x5),
Text('最新解读', style: Theme.of(context).textTheme.titleMedium),
const SizedBox(height: WiseSpacing.x3),
const SectionTitle(title: '最新解读', icon: Icons.chevron_right),
for (final report in visible.skip(1)) ...[
ReportCardWidget(
report: report,