import 'package:flisp_app/models/reminder.dart'; import 'package:flisp_app/widgets/common.dart'; import 'package:flutter/material.dart'; import 'package:intl/intl.dart'; Widget buildReminderList({ required List reminders, required ValueChanged onEditReminder, }) { return ListView.separated( itemCount: reminders.length, separatorBuilder: (context, index) => SizedBox(height: 8), itemBuilder: (context, index) { final reminder = reminders[index]; return _buildReminderItem(reminder: reminder, onEdit: onEditReminder); }, ); } Widget _buildReminderItem({ required Reminder reminder, required ValueChanged onEdit, }) { return buildCard( child: ListTile( contentPadding: EdgeInsets.symmetric(horizontal: 8, vertical: 0), leading: Icon(Icons.notifications, color: Colors.blue), title: _buildReminderTitle(reminder), subtitle: _buildReminderSubtitle(reminder), onTap: () => onEdit(reminder), ), ); } Widget _buildReminderTitle(Reminder reminder) { return Text( reminder.title, style: TextStyle( fontSize: 16, fontWeight: FontWeight.w600, ), maxLines: 1, overflow: TextOverflow.ellipsis, ); } Widget _buildReminderSubtitle(Reminder reminder) { return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ SizedBox(height: 4), Text( reminder.content, style: TextStyle( fontSize: 14, color: Colors.grey[700], ), maxLines: 2, overflow: TextOverflow.ellipsis, ), SizedBox(height: 8), Container( padding: EdgeInsets.symmetric(horizontal: 8, vertical: 4), decoration: BoxDecoration( color: Colors.blue[50], borderRadius: BorderRadius.circular(4), ), child: Text( DateFormat('MM月dd日 HH:mm').format(reminder.scheduledTime), style: TextStyle( fontSize: 12, color: Colors.blue[700], fontWeight: FontWeight.w500, ), ), ), ], ); } // 空状态 Widget buildEmptyState() { return Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ Icon(Icons.task_alt, size: 80, color: Colors.orange.shade600), Text( '📋 还没有任何待办事项\n点击下方+号开始规划你的任务吧!', textAlign: TextAlign.center, style: TextStyle(color: Colors.orange.shade600), ), ], ), ); }