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
+35 -18
View File
@@ -6,10 +6,14 @@ import '../../data/api/report_data_source.dart';
import '../../data/content_providers.dart';
import '../../data/models/models.dart';
import '../../routing/app_routes.dart';
import '../../theme/app_icons.dart';
import '../../theme/yanting_text.dart';
import '../../theme/yanting_tokens.dart';
import '../../theme/wise_tokens.dart';
import '../../widgets/app_buttons.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';
@@ -28,7 +32,12 @@ class ReportsPage 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)?
final void Function(
String audioId,
String reportId,
String title,
int durationSec,
)?
onStartModuleAudio;
final VoidCallback? onToggleAudio;
final void Function(int delta)? onSeekAudio;
@@ -59,23 +68,27 @@ class ReportsPage extends HookConsumerWidget {
);
return ListView(
padding: const EdgeInsets.all(WiseSpacing.x4),
padding: const EdgeInsets.fromLTRB(
WiseSpacing.x4,
4,
WiseSpacing.x4,
16,
),
children: [
const PageHeader(title: '研报', subtitle: '全部已发布研报解读'),
TextField(
decoration: InputDecoration(
hintText: '搜索标题、机构或主题',
prefixIcon: const Icon(Icons.search),
prefixIcon: const Icon(AppIcons.search),
suffixIcon: currentQuery.isEmpty
? null
: IconButton(
onPressed: () => query.value = '',
icon: const Icon(Icons.close),
),
filled: true,
fillColor: WiseColors.surface,
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(WiseRadius.pill),
borderSide: BorderSide.none,
borderRadius: BorderRadius.circular(YantingRadius.md),
borderSide: const BorderSide(color: YantingColors.input),
),
),
onChanged: (value) => query.value = value.trim(),
@@ -85,30 +98,34 @@ class ReportsPage extends HookConsumerWidget {
children: [
AppButton(
label: '筛选',
icon: Icons.tune,
icon: AppIcons.filter,
kind: AppButtonKind.ghost,
onPressed: items.isEmpty
? null
: () => _openFilterSheet(
context,
items: items,
topic: topic,
),
context,
items: items,
topic: topic,
),
),
const SizedBox(width: WiseSpacing.x2),
AppButton(
label: '最新',
icon: AppIcons.sort,
kind: AppButtonKind.ghost,
onPressed: () {},
),
const SizedBox(width: WiseSpacing.x2),
AppChip(
label: '音频',
label: '音频',
selected: currentHasAudio,
onTap: () => hasAudio.value = !currentHasAudio,
),
const Spacer(),
Text('${filtered.length}', style: YantingText.meta),
],
),
const SizedBox(height: WiseSpacing.x3),
Text(
'${filtered.length} 篇研报解读${currentQuery.isNotEmpty || currentTopic.isNotEmpty || currentHasAudio ? '(已筛选)' : ''}',
style: Theme.of(context).textTheme.bodySmall,
),
const SizedBox(height: WiseSpacing.x3),
if (filtered.isEmpty)
EmptyState(
title: currentQuery.isNotEmpty ? '未找到相关研报' : '当前筛选下暂无研报',