新增排序下拉選單
• 在列表上方加入 DropdownButton,提供「新增時間」「到期時間」「優先權」三種排序方式
• 使用者選擇不同排序方式後,列表即時更新
根據排序方式更新列表
• 使用 setState() 更新 _todoList 的排序
• 保持原有搜尋與篩選功能,不影響其他操作
排序方式記憶
• 可以記住使用者上次選擇的排序方式
• 下次開啟 App 或回到列表時,仍依上次排序顯示
// 排序選單
DropdownButton<String>(
value: _sortOption,
items: [
DropdownMenuItem(value: '新增時間', child: Text('新增時間')),
DropdownMenuItem(value: '到期時間', child: Text('到期時間')),
DropdownMenuItem(value: '優先權', child: Text('優先權')),
],
onChanged: (value) {
setState(() {
_sortOption = value!;
switch (_sortOption) {
case '新增時間':
_todoList.sort((a, b) => a.createdAt.compareTo(b.createdAt));
break;
case '到期時間':
_todoList.sort((a, b) => a.dueDate!.compareTo(b.dueDate!));
break;
case '優先權':
_todoList.sort((a, b) => b.priority.compareTo(a.priority));
break;
}
});
},
),