import 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; import 'package:lucide_icons/lucide_icons.dart'; import '../../../../core/theme/design_tokens.dart'; import 'home_sheet.dart'; class HomeScreen extends StatelessWidget { const HomeScreen({super.key}); @override Widget build(BuildContext context) { return Scaffold( backgroundColor: const Color(0xFFF8FAFC), body: SafeArea( child: Column( children: [ _buildHeader(context), Expanded(child: _buildChatArea()), _buildInputContainer(context), ], ), ), ); } Widget _buildHeader(BuildContext context) { return SizedBox( height: 60, child: Padding( padding: const EdgeInsets.symmetric(horizontal: 20), child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ IconButton( icon: const Icon( LucideIcons.settings, size: 24, color: AppColors.slate900, ), onPressed: () => context.push('/settings'), ), Row( children: [ IconButton( icon: const Icon( LucideIcons.calendar, size: 24, color: AppColors.slate900, ), onPressed: () => context.push('/calendar/dayweek'), ), const SizedBox(width: 16), IconButton( icon: const Icon( LucideIcons.messageSquare, size: 24, color: AppColors.slate900, ), onPressed: () => context.push('/messages/invites'), ), ], ), ], ), ), ); } Widget _buildChatArea() { return Padding( padding: const EdgeInsets.all(20), child: Column( children: [ _buildUserMessageRow(), const SizedBox(height: 16), _buildTodoCard(), ], ), ); } Widget _buildUserMessageRow() { return Row( crossAxisAlignment: CrossAxisAlignment.center, children: [ const Expanded(child: SizedBox()), Container( padding: const EdgeInsets.symmetric(horizontal: 13, vertical: 9), decoration: BoxDecoration( color: const Color(0xFFEAF1FB), borderRadius: const BorderRadius.only( topLeft: Radius.circular(12), topRight: Radius.circular(12), bottomLeft: Radius.circular(12), bottomRight: Radius.circular(0), ), ), child: const Text( '明天提醒我开会', style: TextStyle(fontSize: 14, color: AppColors.slate900), ), ), ], ); } Widget _buildTodoCard() { return Container( width: double.infinity, padding: const EdgeInsets.all(16), decoration: BoxDecoration( color: AppColors.white, borderRadius: BorderRadius.circular(16), ), child: Row( children: [ Container( width: 4, height: 60, decoration: const BoxDecoration( color: AppColors.blue500, borderRadius: BorderRadius.only( topLeft: Radius.circular(4), bottomLeft: Radius.circular(4), ), ), ), const SizedBox(width: 12), const Expanded( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( '明天 10:00', style: TextStyle(fontSize: 12, color: AppColors.slate500), ), SizedBox(height: 4), Text( '开会', style: TextStyle( fontSize: 16, fontWeight: FontWeight.w500, color: AppColors.slate900, ), ), ], ), ), ], ), ); } Widget _buildInputContainer(BuildContext context) { return Container( height: 80, padding: const EdgeInsets.all(16), color: const Color(0xFFF8FAFC), child: Row( children: [ GestureDetector( onTap: () => _showBottomSheet(context), child: Container( width: 36, height: 36, decoration: BoxDecoration( color: AppColors.white, shape: BoxShape.circle, border: Border.all(color: const Color(0xFFE2E8F0)), ), child: const Icon( LucideIcons.plus, size: 20, color: AppColors.slate500, ), ), ), const SizedBox(width: 8), Expanded( child: Container( height: 48, padding: const EdgeInsets.symmetric(horizontal: 16), decoration: BoxDecoration( color: AppColors.white, borderRadius: BorderRadius.circular(24), ), child: Row( children: [ const Expanded( child: TextField( decoration: InputDecoration( hintText: '输入消息...', border: InputBorder.none, isDense: true, contentPadding: EdgeInsets.zero, ), ), ), const Icon( LucideIcons.mic, size: 20, color: AppColors.slate500, ), ], ), ), ), ], ), ); } void _showBottomSheet(BuildContext context) { showModalBottomSheet( context: context, backgroundColor: Colors.transparent, isScrollControlled: true, builder: (context) => const HomeSheet(), ); } }