|
|
|
|
@ -1,5 +1,3 @@
|
|
|
|
|
import 'dart:async';
|
|
|
|
|
|
|
|
|
|
import 'package:flutter/material.dart';
|
|
|
|
|
import 'package:timemanage/db/timer_entry_database.dart';
|
|
|
|
|
import 'package:timemanage/model/timer_entry.dart';
|
|
|
|
|
@ -16,6 +14,7 @@ class DashBoardScreen extends StatefulWidget {
|
|
|
|
|
class DashBoardScreenState extends State<DashBoardScreen> {
|
|
|
|
|
late List<TimerEntry> timers; // 计时器列表
|
|
|
|
|
bool isLoading = false; // 是否正在加载
|
|
|
|
|
String _searchQuery = '';
|
|
|
|
|
|
|
|
|
|
// 初始化状态
|
|
|
|
|
@override
|
|
|
|
|
@ -40,7 +39,7 @@ class DashBoardScreenState extends State<DashBoardScreen> {
|
|
|
|
|
timers = await TimerEntryDatabase.instance.readAll();
|
|
|
|
|
|
|
|
|
|
setState(() {
|
|
|
|
|
timers = timers;
|
|
|
|
|
timers = timers.where((timer) => timer.name.contains(_searchQuery)).toList();
|
|
|
|
|
isLoading = false;
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
@ -106,10 +105,42 @@ class DashBoardScreenState extends State<DashBoardScreen> {
|
|
|
|
|
actions: [
|
|
|
|
|
// 搜索按钮
|
|
|
|
|
// TODO: 实现搜索功能
|
|
|
|
|
IconButton(
|
|
|
|
|
icon: const Icon(Icons.search),
|
|
|
|
|
onPressed: () {},
|
|
|
|
|
// 搜索按钮
|
|
|
|
|
IconButton(
|
|
|
|
|
icon: const Icon(Icons.search),
|
|
|
|
|
onPressed: () {
|
|
|
|
|
showDialog<String>(
|
|
|
|
|
context: context,
|
|
|
|
|
builder: (context) => AlertDialog(
|
|
|
|
|
title: const Text('搜索计时器'),
|
|
|
|
|
content: TextField(
|
|
|
|
|
onChanged: (value) {
|
|
|
|
|
setState(() {
|
|
|
|
|
_searchQuery = value;
|
|
|
|
|
});
|
|
|
|
|
refreshTimers();
|
|
|
|
|
},
|
|
|
|
|
),
|
|
|
|
|
actions: [
|
|
|
|
|
TextButton(
|
|
|
|
|
onPressed: () {
|
|
|
|
|
setState(() {
|
|
|
|
|
_searchQuery = '';
|
|
|
|
|
});
|
|
|
|
|
refreshTimers();
|
|
|
|
|
Navigator.pop(context, 'Cancel');
|
|
|
|
|
},
|
|
|
|
|
child: const Text('取消搜索'),
|
|
|
|
|
),
|
|
|
|
|
TextButton(
|
|
|
|
|
onPressed: () => Navigator.pop(context, 'OK'),
|
|
|
|
|
child: const Text('确定'),
|
|
|
|
|
),
|
|
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
);
|
|
|
|
|
},
|
|
|
|
|
),
|
|
|
|
|
// // 筛选按钮
|
|
|
|
|
// IconButton(
|
|
|
|
|
// icon: const Icon(Icons.filter_alt),
|
|
|
|
|
@ -189,10 +220,8 @@ class DashBoardScreenState extends State<DashBoardScreen> {
|
|
|
|
|
setState(() {
|
|
|
|
|
if (timers[index].isActive) {
|
|
|
|
|
timers[index].stop();
|
|
|
|
|
TimerEntryDatabase.instance.update(timers[index]);
|
|
|
|
|
} else {
|
|
|
|
|
timers[index].start();
|
|
|
|
|
TimerEntryDatabase.instance.update(timers[index]);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
@ -215,4 +244,4 @@ class DashBoardScreenState extends State<DashBoardScreen> {
|
|
|
|
|
},
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|