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
@@ -3,11 +3,10 @@ import 'package:hooks_riverpod/hooks_riverpod.dart';
import '../../data/api/report_data_source.dart';
import '../../data/content_providers.dart';
import '../../data/models/models.dart';
import '../../routing/app_routes.dart';
import '../../theme/wise_tokens.dart';
import '../../widgets/app_card.dart';
import '../../widgets/badges.dart';
import '../../widgets/institution_card.dart';
import '../../widgets/page_header.dart';
import '../../widgets/states.dart';
class InstitutionsPage extends HookConsumerWidget {
@@ -35,18 +34,19 @@ class InstitutionsPage extends HookConsumerWidget {
);
}
return ListView(
padding: const EdgeInsets.all(WiseSpacing.x4),
padding: const EdgeInsets.fromLTRB(
WiseSpacing.x4,
4,
WiseSpacing.x4,
16,
),
children: [
Text('研报来源机构', style: Theme.of(context).textTheme.titleLarge),
const SizedBox(height: WiseSpacing.x3),
const PageHeader(title: '机构', subtitle: '可获取研报的机构'),
for (final item in sorted) ...[
InstitutionCard(
institution: item,
onTap: () => openInstitutionDetail(
context,
dataSource,
item.id,
),
onTap: () =>
openInstitutionDetail(context, dataSource, item.id),
),
const SizedBox(height: WiseSpacing.x3),
],
@@ -56,76 +56,3 @@ class InstitutionsPage extends HookConsumerWidget {
);
}
}
class InstitutionCard extends StatelessWidget {
const InstitutionCard({required this.institution, required this.onTap, super.key});
final Institution institution;
final VoidCallback onTap;
@override
Widget build(BuildContext context) {
final initials = institution.nameCn.isEmpty
? ''
: institution.nameCn.characters.take(2).toString();
return AppCard(
onTap: onTap,
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
CircleAvatar(
radius: 25,
backgroundColor: WiseColors.secondary200,
foregroundColor: WiseColors.primary,
child: Text(
initials,
style: const TextStyle(fontWeight: FontWeight.w800),
),
),
const SizedBox(width: WiseSpacing.x3),
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
institution.nameCn,
style: Theme.of(context).textTheme.titleMedium,
),
if (institution.nameEn.isNotEmpty)
Text(
institution.nameEn,
maxLines: 1,
overflow: TextOverflow.ellipsis,
style: Theme.of(context).textTheme.bodySmall,
),
const SizedBox(height: WiseSpacing.x2),
Wrap(
spacing: WiseSpacing.x2,
runSpacing: WiseSpacing.x2,
children: [
if (institution.institutionType.isNotEmpty)
AppBadge(text: institution.institutionType),
for (final topic in institution.coveredTopics.take(3))
AppBadge(text: topic, kind: BadgeKind.brand),
],
),
],
),
),
const SizedBox(width: WiseSpacing.x2),
Column(
children: [
Text(
'${institution.reportCount}',
style: Theme.of(context).textTheme.titleMedium?.copyWith(
color: WiseColors.primary,
),
),
Text('份研报', style: Theme.of(context).textTheme.bodySmall),
],
),
],
),
);
}
}