改善完成任務切換動畫
• 點擊任務前的打勾框,完成/未完成的狀態切換加入動畫效果
• 文字顏色、打勾框顏色平滑過渡,提升使用者體驗
優化列表滾動與選取反饋
• 滾動列表時,確保每個 ListTile 反應平滑
• 點擊或長按項目時有明確的視覺反饋
整理程式結構
• 將待辦項目顯示邏輯抽離成單獨 todo_item_Widget
• 保持 Main.dart 簡潔,只負責畫面組合與狀態管理
// 修改 ToDoItemWidget 讓勾選時有動畫效果
class ToDoItemWidget extends StatefulWidget {
final ToDoItem item;
final Function onToggle;
final Function onDelete;
const ToDoItemWidget({
super.key,
required this.item,
required this.onToggle,
required this.onDelete,
});
@override
State<ToDoItemWidget> createState() => _ToDoItemWidgetState();
}
class _ToDoItemWidgetState extends State<ToDoItemWidget> {
@override
Widget build(BuildContext context) {
return AnimatedContainer(
duration: const Duration(milliseconds: 300), // 新增動畫
color: widget.item.isDone ? Colors.purple.shade100 : Colors.white,
child: ListTile(
leading: Checkbox(
value: widget.item.isDone,
onChanged: (_) => widget.onToggle(),
),
title: Text(
widget.item.title,
style: TextStyle(
decoration: widget.item.isDone
? TextDecoration.lineThrough
: TextDecoration.none,
color: widget.item.isDone ? Colors.purple : Colors.black,
),
),
trailing: IconButton(
icon: const Icon(Icons.delete, color: Colors.red),
onPressed: () => widget.onDelete(),
),
),
);
}
}