iT邦幫忙

3

DAY 7:新增互動功能與待辦項目管理

  • 分享至 

  • xImage
  •  
  1. 建立可互動的待辦清單
    •修改位子 : 在 MyHomePage 的 _MyHomePageState 裡面,原本的靜態 ListView 改成動態 List
List<Map<String, dynamic>> todoItems = [
  {'title': '買牛奶', 'isDone': false},
  {'title': '寫作業', 'isDone': false},
  {'title': '運動', 'isDone': false},
];

•每個 ListTile 的 onTap 改成切換完成狀態:

onTap: () {
  setState(() {
    todoItems[index]['isDone'] = !todoItems[index]['isDone'];
  });
}

•完成的項目文字加刪除線:

style: TextStyle(
  decoration: todoItems[index]['isDone'] ? TextDecoration.lineThrough : null,
)
  1. 使用 ListView.builder() 生成清單
    • 修改位置:替換原本 ListView 中的靜態 ListTile
ListView.builder(
 itemCount: todoItems.length,
 itemBuilder: (context, index) {
   return ListTile(
     title: Text(
       todoItems[index]['title'],
       style: TextStyle(
         decoration: todoItems[index]['isDone'] ? TextDecoration.lineThrough : null,
       ),
     ),
     onTap: () {
       setState(() {
         todoItems[index]['isDone'] = !todoItems[index]['isDone'];
       });
     },
   );
 },
)
  1. 新增待辦項目功能
    • 修改位置:加入 FloatingActionButton,點擊後打開對話框新增項目
floatingActionButton: FloatingActionButton(
 onPressed: () {
   showDialog(
     context: context,
     builder: (context) {
       String newTask = '';
       return AlertDialog(
         title: Text('新增待辦事項'),
         content: TextField(
           onChanged: (value) => newTask = value,
         ),
         actions: [
           TextButton(
             onPressed: () {
               setState(() {
                 todoItems.add({'title': newTask, 'isDone': false});
               });
               Navigator.of(context).pop();
             },
             child: Text('新增'),
           ),
         ],
       );
     },
   );
 },
 child: Icon(Icons.add),
)
  1. UI 調整與畫面呈現
    • AppBar 標題維持 "To-Do List App",顏色使用 Theme 色彩
    • 每個待辦項目使用 ListTile,已完成項目顯示刪除線
    • 新增、切換完成、刪除都會即時更新畫面,畫面互動完整

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

尚未有邦友留言

立即登入留言