| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- import 'package:flutter/material.dart';
- import 'package:flutter_riverpod/flutter_riverpod.dart';
- import '../../core/theme/app_colors.dart';
- import '../../core/utils/date_utils.dart' as du;
- import '../../core/utils/responsive.dart';
- import '../../shared/widgets/form_section.dart';
- import '../../shared/widgets/form_field_row.dart';
- import 'announcement_model.dart';
- final announcementDetailProvider = FutureProvider.autoDispose.family<AnnouncementModel, String>((ref, id) async {
- return AnnouncementModel(
- id: id,
- title: '关于2026年端午节放假安排的通知',
- content: '根据国务院办公厅通知精神,现将2026年端午节放假安排通知如下:6月25日(星期四)至6月27日(星期六)放假调休,共3天。6月28日(星期日)上班。请各部门提前做好工作安排,确保节日期间各项工作正常运转。',
- type: '通知公告',
- publisherId: 'u-admin',
- publisherName: '行政管理部',
- publishTime: DateTime(2026, 5, 22),
- isTop: true,
- requireConfirm: false,
- expiryDate: DateTime(2026, 6, 28),
- readCount: 45,
- unreadCount: 12,
- createTime: DateTime(2026, 5, 22),
- );
- });
- class AnnouncementDetailPage extends ConsumerWidget {
- final String id;
- const AnnouncementDetailPage({super.key, required this.id});
- @override
- Widget build(BuildContext context, WidgetRef ref) {
- final detailAsync = ref.watch(announcementDetailProvider(id));
- final r = ResponsiveHelper.of(context);
- return Scaffold(
- appBar: AppBar(title: const Text('公告详情')),
- body: detailAsync.when(
- loading: () => const Center(child: CircularProgressIndicator()),
- error: (_, __) => const Center(child: Text('加载失败')),
- data: (item) => Align(alignment: Alignment.topCenter,
- child: ConstrainedBox(
- constraints: BoxConstraints(maxWidth: r.detailTwoColumns ? 700 : double.infinity),
- child: SingleChildScrollView(
- padding: const EdgeInsets.symmetric(vertical: 8),
- child: FormSection(
- title: item.title,
- children: [
- FormFieldRow(label: '发布部门', value: item.publisherName, showArrow: false),
- FormFieldRow(label: '发布时间', value: du.DateUtils.formatDate(item.publishTime), showArrow: false),
- FormFieldRow(label: '公告类型', value: item.type, showArrow: false),
- if (item.requireConfirm)
- FormFieldRow(label: '确认要求', value: '需确认已读', showArrow: false),
- FormFieldRow(label: '已读', value: '${item.readCount}人', showArrow: false),
- const Divider(),
- Padding(
- padding: const EdgeInsets.all(14),
- child: Text(item.content, style: const TextStyle(color: AppColors.textPrimary, fontSize: 14, height: 1.6)),
- ),
- ],
- ),
- ),
- ),
- ),
- ),
- );
- }
- }
|