import 'package:flutter/material.dart'; import 'package:lucide_icons/lucide_icons.dart'; import '../../../../core/theme/design_tokens.dart'; class TodoDetailScreen extends StatelessWidget { const TodoDetailScreen({super.key}); @override Widget build(BuildContext context) { return Scaffold( backgroundColor: AppColors.todoBg, body: SafeArea( child: Column( children: [ _buildHeader(context), Expanded(child: _buildContent()), ], ), ), ); } Widget _buildHeader(BuildContext context) { return SizedBox( height: 64, child: Padding( padding: const EdgeInsets.only(left: 16, right: 16, top: 12, bottom: 8), child: Align( alignment: Alignment.centerLeft, child: GestureDetector( onTap: () => Navigator.of(context).pop(), child: Container( width: 36, height: 36, decoration: BoxDecoration( color: AppColors.messageBtnWrap, borderRadius: BorderRadius.circular(18), border: Border.all(color: AppColors.messageBtnBorder, width: 1), ), child: const Icon( LucideIcons.chevronLeft, size: 16, color: AppColors.slate700, ), ), ), ), ), ); } Widget _buildContent() { return Padding( padding: const EdgeInsets.only(left: 16, right: 16, top: 4, bottom: 20), child: ListView( children: [ _buildMainCard(), const SizedBox(height: 12), const Text( '日历事件卡片', style: TextStyle( fontFamily: 'Inter', fontSize: 12, fontWeight: FontWeight.w500, color: AppColors.slate500, ), ), const SizedBox(height: 10), _buildEventCard( title: '完成活动海报设计', time: '2026年2月9日 09:00 - 09:30', borderColor: AppColors.todoEventBorder1, ), const SizedBox(height: 10), _buildEventCard( title: '活动方案评审会议', time: '2026年2月9日 16:00 - 17:00', borderColor: AppColors.todoEventBorder2, ), const SizedBox(height: 10), _buildEventCard( title: '提交最终活动方案', time: '2026年2月10日 10:00 - 10:20', borderColor: AppColors.todoEventBorder3, ), ], ), ); } Widget _buildMainCard() { return Container( width: double.infinity, padding: const EdgeInsets.all(12), decoration: BoxDecoration( color: AppColors.todoCardBg, borderRadius: BorderRadius.circular(14), border: Border.all(color: AppColors.todoDetailCardBorder, width: 1), ), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ const Text( '活动发布准备', style: TextStyle( fontFamily: 'Inter', fontSize: 18, fontWeight: FontWeight.w700, color: AppColors.slate900, ), ), const SizedBox(height: 4), const Text( '截止今天 18:00 · 已拆分为多个日历事件', style: TextStyle( fontFamily: 'Inter', fontSize: 12, fontWeight: FontWeight.w500, color: AppColors.slate500, ), ), const SizedBox(height: 8), Container(height: 1, color: const Color(0xFFE5E7EB)), const SizedBox(height: 8), _buildInfoRow( label: '所属象限', value: '重要紧急', valueColor: AppColors.g1Text, ), const SizedBox(height: 8), _buildInfoRow( label: '关联日历事件', value: '3个', valueColor: AppColors.g3Text, ), ], ), ); } Widget _buildInfoRow({ required String label, required String value, required Color valueColor, }) { return Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text( label, style: const TextStyle( fontFamily: 'Inter', fontSize: 12, fontWeight: FontWeight.w600, color: AppColors.slate400, ), ), Text( value, style: TextStyle( fontFamily: 'Inter', fontSize: 12, fontWeight: FontWeight.w700, color: valueColor, ), ), ], ); } Widget _buildEventCard({ required String title, required String time, required Color borderColor, }) { return Container( width: double.infinity, padding: const EdgeInsets.all(10), decoration: BoxDecoration( color: AppColors.todoCardBg, borderRadius: BorderRadius.circular(14), border: Border.all(color: borderColor, width: 1), ), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text( title, style: const TextStyle( fontFamily: 'Inter', fontSize: 13, fontWeight: FontWeight.w600, color: AppColors.slate700, ), ), Row( mainAxisSize: MainAxisSize.min, children: [ Container( width: 8, height: 8, decoration: BoxDecoration( color: AppColors.slate300, shape: BoxShape.circle, ), ), const SizedBox(width: 8), Container( width: 8, height: 8, decoration: BoxDecoration( color: AppColors.slate300, shape: BoxShape.circle, ), ), ], ), ], ), const SizedBox(height: 8), Text( time, style: const TextStyle( fontFamily: 'Inter', fontSize: 12, fontWeight: FontWeight.w500, color: AppColors.slate500, ), ), ], ), ); } }