iT邦幫忙

0

12 : 優化任務列表互動與動畫效果

  • 分享至 

  • xImage
  •  
  1. 改善完成任務切換動畫
    • 點擊任務前的打勾框,完成/未完成的狀態切換加入動畫效果
    • 文字顏色、打勾框顏色平滑過渡,提升使用者體驗

  2. 優化列表滾動與選取反饋
    • 滾動列表時,確保每個 ListTile 反應平滑
    • 點擊或長按項目時有明確的視覺反饋

  3. 整理程式結構
    • 將待辦項目顯示邏輯抽離成單獨 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(),
       ),
     ),
   );
 }
}

https://ithelp.ithome.com.tw/upload/images/20251011/20178900djx8tAWzJx.png


圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言