iT邦幫忙

0

13 : 新增任務排序功能

  • 分享至 

  • xImage
  •  
  1. 新增「依完成狀態排序」功能
    • 將完成的任務自動移到列表下方,未完成的任務保持在上方
    • 提升使用者瀏覽待辦項目的效率
    • 互動上:完成狀態切換後,自動重新排序列表
oid _toggleDone(int index) {
 setState(() {
   _todoList[index]['done'] = !_todoList[index]['done'];
   // 第十三天新增:依完成狀態排序
   _todoList.sort((a, b) => a['done'] ? 1 : -1);
 });
}
  1. 新增「手動排序任務」介面準備
    • 為未來可以拖曳排序任務做準備(今天只是建立框架)
    • 使用 ListView.builder 繼續呈現動態列表
    • 稍後可搭配 ReorderableListView 完成拖曳排序
// 第十三天新增:ReorderableListView 替代 ListView.builder
// 目前只是框架,之後可實作拖曳排序
Expanded(
child: ListView.builder(
  itemCount: _todoList.length,
  itemBuilder: (context, index) {
    final todo = _todoList[index];
    return ListTile(
      key: ValueKey(todo['task']),
      title: Text(
        todo['task'],
        style: TextStyle(
          decoration: todo['done'] 
              ? TextDecoration.lineThrough 
              : TextDecoration.none,
        ),
      ),
      leading: GestureDetector(
        onTap: () => _toggleDone(index),
        child: Container(
          width: 24,
          height: 24,
          decoration: BoxDecoration(
            shape: BoxShape.circle,
            border: Border.all(
              color: todo['done'] ? Colors.purple : Colors.grey,
              width: 2,
            ),
          ),
          child: todo['done'] 
              ? Icon(Icons.check, size: 16, color: Colors.purple) 
              : null,
        ),
      ),
      trailing: IconButton(
        icon: const Icon(Icons.delete, color: Colors.yellow),
        onPressed: () => _deleteTask(index),
      ),
    );
  },
),
)
  1. 改善使用者體驗
    • 切換完成狀態或刪除任務時列表會自動更新
    • 排序後的列表保持整齊,未完成任務在上方,已完成任務在下方

總結:
• 目標:完成任務自動排序功能,並為手動拖曳排序做準備
• 畫面效果:打勾後的任務會自動移到下方,未完成任務保持在上方,列表仍保持紫色主題與圓形打勾框,垃圾桶功能保持不變

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


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

尚未有邦友留言

立即登入留言