parent
9e9f469bee
commit
1e0f12d682
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,98 @@
|
||||
import 'package:timemanagerapp/database/dao/CourseDao.dart';
|
||||
import 'package:timemanagerapp/entity/Course.dart';
|
||||
import 'package:timemanagerapp/entity/CourseForm.dart';
|
||||
import 'package:timemanagerapp/setting/Setting.dart';
|
||||
import 'package:timemanagerapp/util/GetCourseByLogin.dart';
|
||||
|
||||
import '../util/dataUtil.dart';
|
||||
|
||||
class CourseController {
|
||||
static CourseController getInstance() {
|
||||
return new CourseController();
|
||||
}
|
||||
|
||||
List<Course> courseList = []; //实时维护的courseList缓存
|
||||
|
||||
DateTime termstartdate = DateTime(2021, 8, 30); //Setting.getStartDate();
|
||||
|
||||
// 课表的时间范围
|
||||
final List<List<String>> raspiyane = [
|
||||
["8:00", "8:45"], //1
|
||||
["8:50", "9:35"], //2
|
||||
["10:05", "10:50"], //3
|
||||
["10:55", "11:40"], //4
|
||||
|
||||
["13:30", "14:15"], //5
|
||||
["14:20", "15:05"], //6
|
||||
["15:35", "16:20"], //7
|
||||
["16:25", "17:10"], //8
|
||||
|
||||
["18:30", "19:11"],
|
||||
["19:20", "20:05"],
|
||||
["20:10", "20:55"],
|
||||
["21:10", "21:50"],
|
||||
["22:05", "22:35"],
|
||||
];
|
||||
|
||||
Future<void> addCourseForm(CourseForm courseForm) async {
|
||||
List<Course> courseListToInsert = [];
|
||||
for (int week = courseForm.getStartWeek(); week <= courseForm.getEndWeek(); week++) {
|
||||
for(int day in courseForm.selectedDays){
|
||||
// 计算具体的日期和时间
|
||||
final startDate = termstartdate.add(Duration(
|
||||
days: (7 * (week - 1) + day - 1),
|
||||
hours: int.parse(raspiyane[courseForm.getStartTime() - 1][0].split(':')[0]),
|
||||
minutes: int.parse(raspiyane[courseForm.getStartTime() - 1][0].split(':')[1]),
|
||||
));
|
||||
|
||||
final endDate = termstartdate.add(Duration(
|
||||
days: (7 * (week - 1) + day! - 1),
|
||||
hours: int.parse(raspiyane[courseForm.getEndTime() - 1][1].split(':')[0]),
|
||||
minutes: int.parse(raspiyane[courseForm.getEndTime() - 1][1].split(':')[1]),
|
||||
));
|
||||
Course course = Course(
|
||||
name: courseForm.getCourse(),
|
||||
userId: Setting.user!.getId!,
|
||||
courseId: generateId(),
|
||||
teacher: courseForm.getTeacher(),
|
||||
location: courseForm.getLocation(),
|
||||
start: startDate,
|
||||
end: endDate,
|
||||
credit: courseForm.getCredit(),
|
||||
remark: 'useradd'
|
||||
);
|
||||
courseListToInsert.add(course);
|
||||
}
|
||||
}
|
||||
await insertCourseList(courseListToInsert);
|
||||
}
|
||||
|
||||
Future<List<Map<String, dynamic>>> getCourses() async {
|
||||
return CourseDao().getCourses();
|
||||
}
|
||||
|
||||
Future<void> insertCourse(Course course) async {
|
||||
await CourseDao().insertCourse(course);
|
||||
}
|
||||
|
||||
Future<void> insertCourseList(List<Course> courseList) async {
|
||||
for(Course course in courseList){
|
||||
await CourseDao().insertCourse(course);
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> autoImportCours() async {
|
||||
List<Course> courseList = await GetCourseByLogin().run();
|
||||
await insertCourseList(courseList);
|
||||
}
|
||||
|
||||
|
||||
Future<void> deleteAllCourses() async {
|
||||
await CourseDao().deleteAllCourses();
|
||||
}
|
||||
|
||||
Future<void> deleteCourse(int id) async {
|
||||
await CourseDao().deleteCourseById(id);
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,80 @@
|
||||
import '../entity/Team.dart';
|
||||
import '../entity/Work.dart';
|
||||
import 'package:timemanagerapp/database/dao/TeamDao.dart';
|
||||
import 'package:timemanagerapp/database/dao/WorkDao.dart';
|
||||
|
||||
class TeamController {
|
||||
late int leaderid;
|
||||
List<Team> teamList = []; //实时维护的teamList缓存
|
||||
Map<int, List<Work>> Wordmaplist = {};
|
||||
|
||||
TeamController(int leaderid) {
|
||||
this.leaderid = leaderid;
|
||||
//TODO: 从服务器中根据leaderid获取teamList
|
||||
|
||||
for (var team in teamList) {
|
||||
//TODO: 从服务器中根据team.id获取Worklist[team.id]
|
||||
//Wordmaplist[team.id].add()
|
||||
}
|
||||
}
|
||||
|
||||
Future<List<Map<String, dynamic>>> getTeams() async {
|
||||
return TeamDao().getTeams();
|
||||
}
|
||||
|
||||
Future<void> insertTeam(Team team) async {
|
||||
await TeamDao().insertTeam(team);
|
||||
}
|
||||
|
||||
Future<void> insertTeamList(List<Team> teamList) async {
|
||||
for (Team team in teamList) {
|
||||
await TeamDao().insertTeam(team);
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> deleteAllTeams() async {
|
||||
await TeamDao().deleteAllTeams();
|
||||
}
|
||||
|
||||
Future<void> deleteTeam(int id) async {
|
||||
await TeamDao().deleteTeamById(id);
|
||||
}
|
||||
|
||||
Future<void> updateTeam(Team team) async {
|
||||
await TeamDao().updateTeam(team);
|
||||
}
|
||||
|
||||
Future<void> insertWork(Work work) async {
|
||||
await WorkDao().insertWork(work);
|
||||
}
|
||||
|
||||
Future<void> insertWorkList(List<Work> workList) async {
|
||||
for (Work work in workList) {
|
||||
await WorkDao().insertWork(work);
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> deleteAllWorks() async {
|
||||
await WorkDao().deleteAllWorks();
|
||||
}
|
||||
|
||||
Future<void> deleteWork(int id) async {
|
||||
await WorkDao().deleteWorkByid(id);
|
||||
}
|
||||
|
||||
Future<void> updateWork(Work work) async {
|
||||
await WorkDao().updateWork(work);
|
||||
}
|
||||
|
||||
Future<List<Map<String, dynamic>>> getWorks() async {
|
||||
return WorkDao().getWorks();
|
||||
}
|
||||
|
||||
Future<List<Map<String, dynamic>>> getWorksByTeamid(int teamid) async {
|
||||
return WorkDao().getWorksByTeamid(teamid);
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -0,0 +1,32 @@
|
||||
import 'package:timemanagerapp/database/User/UserService.dart';
|
||||
import 'package:timemanagerapp/database/dao/UserDao.dart';
|
||||
import 'package:timemanagerapp/database/MyDatebase.dart';
|
||||
import 'package:timemanagerapp/entity/User.dart';
|
||||
|
||||
/**
|
||||
* 封装所有要用到的与用户相关的函数
|
||||
*/
|
||||
class UserController {
|
||||
//对外暴露实例
|
||||
static UserController getInstance() {
|
||||
return new UserController();
|
||||
}
|
||||
|
||||
Future<List<Map<String, dynamic>>> getUsers() async {
|
||||
return await UserDao.getInstance().getUsers();
|
||||
}
|
||||
|
||||
Future<void> insertUser(User user) async {
|
||||
await UserDao.getInstance().insertUser(user);
|
||||
}
|
||||
|
||||
Future<void> deleteAllUsers() async {
|
||||
await UserDao.getInstance().deleteAllUsers();
|
||||
}
|
||||
|
||||
Future<void> deleteUser(int id) async {
|
||||
await UserDao.getInstance().deleteUser(id);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,72 @@
|
||||
/*
|
||||
import 'package:timemanagerapp/entity/User.dart';
|
||||
|
||||
*/
|
||||
/**
|
||||
* 封装对User的crud操作
|
||||
*//*
|
||||
|
||||
class UserMapper {
|
||||
UserMapper instance = new UserMapper();
|
||||
|
||||
//对外暴露实例
|
||||
static UserMapper getInstance() {
|
||||
return this.instance;
|
||||
}
|
||||
|
||||
*/
|
||||
/**
|
||||
* 添加用户
|
||||
*//*
|
||||
|
||||
bool add(
|
||||
String username,
|
||||
String password,
|
||||
int role,
|
||||
) {
|
||||
//TODO
|
||||
}
|
||||
|
||||
*/
|
||||
/**
|
||||
* 删除用户
|
||||
* @param id 用户id
|
||||
*//*
|
||||
|
||||
bool delete(int id) {
|
||||
//TODO
|
||||
}
|
||||
|
||||
*/
|
||||
/**
|
||||
* 查询所有用户
|
||||
*//*
|
||||
|
||||
List<User> selectAll() {
|
||||
//TODO
|
||||
}
|
||||
|
||||
*/
|
||||
/**
|
||||
* 查询单个用户
|
||||
*//*
|
||||
|
||||
User query(int id) {
|
||||
//TODO
|
||||
}
|
||||
|
||||
*/
|
||||
/**
|
||||
* 修改一个用户
|
||||
*//*
|
||||
|
||||
User update(
|
||||
int id,
|
||||
String username,
|
||||
String password,
|
||||
String role,
|
||||
) {
|
||||
//TODO
|
||||
}
|
||||
}
|
||||
*/
|
||||
@ -0,0 +1,92 @@
|
||||
import 'package:timemanagerapp/database/MyDatebase.dart';
|
||||
import 'package:timemanagerapp/entity/Course.dart';
|
||||
|
||||
/**
|
||||
* 封装所有要用到的与课相关的函数
|
||||
*/
|
||||
class CourseDao {
|
||||
//对外暴露实例
|
||||
static CourseDao getInstance() {
|
||||
return new CourseDao();
|
||||
}
|
||||
|
||||
var db = MyDatabase.initDatabase();
|
||||
|
||||
Future<List<Map<String, dynamic>>> getCourses() async {
|
||||
final database = await db;
|
||||
if (database != null) {
|
||||
return database.rawQuery('SELECT * FROM Courses');
|
||||
} else {
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> insertCourse(Course course) async {
|
||||
final database = await db;
|
||||
if (database != null) {
|
||||
await database.transaction((txn) async {
|
||||
// 插入数据
|
||||
//!!!注意字符串需加双引号
|
||||
await txn.rawInsert('''
|
||||
INSERT INTO Courses(userId,courseId,name,credit,teacher,location,remark,start,end)
|
||||
VALUES(${course.userId},${course.courseId},"${course.name}",${course.credit},"${course.teacher}","${course.location}","${course.remark}","${course.start}","${course.end}")
|
||||
''');
|
||||
});
|
||||
print("课程插入 : " + course.toString());
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> updateCourseById(Course course) async {
|
||||
final database = await db;
|
||||
if (database != null) {
|
||||
await database.transaction((txn) async {
|
||||
await txn.rawUpdate('''
|
||||
UPDATE Courses SET userId = ${course.userId},courseId = ${course
|
||||
.courseId},name = "${course.name}",credit = ${course
|
||||
.credit},teacher = "${course.teacher}",location = "${course
|
||||
.location}",remark = "${course.remark}",start = "${course
|
||||
.start}",end = "${course.end}"
|
||||
WHERE id = ${course.id}
|
||||
''');
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> updateCourseByCourseId(Course course) async {
|
||||
final database = await db;
|
||||
if (database != null) {
|
||||
await database.transaction((txn) async {
|
||||
await txn.rawUpdate('''
|
||||
UPDATE Courses SET userId = ${course.userId},courseId = ${course
|
||||
.courseId},name = "${course.name}",credit = ${course
|
||||
.credit},teacher = "${course.teacher}",location = "${course
|
||||
.location}",remark = "${course.remark}",start = "${course
|
||||
.start}",end = "${course.end}"
|
||||
WHERE courseId = ${course.courseId}
|
||||
''');
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> deleteCourseById(int id) async {
|
||||
final database = await db;
|
||||
if (database != null) {
|
||||
await database.delete('Courses', where: 'id = ?', whereArgs: [id]);
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> deleteCourseByCourseId(int courseId) async {
|
||||
final database = await db;
|
||||
if (database != null) {
|
||||
await database
|
||||
.delete('Courses', where: 'courseId = ?', whereArgs: [courseId]);
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> deleteAllCourses() async {
|
||||
final database = await db;
|
||||
if (database != null) {
|
||||
await database.delete('Courses', where: '1=1');
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,56 @@
|
||||
import '../../entity/Task.dart';
|
||||
import '../MyDatebase.dart';
|
||||
|
||||
class TaskDao {
|
||||
//对外暴露实例
|
||||
static TaskDao getInstance() {
|
||||
return new TaskDao();
|
||||
}
|
||||
|
||||
var db = MyDatabase.initDatabase();
|
||||
|
||||
Future<List<Map<String, dynamic>>> getTasks() async {
|
||||
final database = await db;
|
||||
if (database != null) {
|
||||
return database.query('Task', orderBy: 'id ASC');
|
||||
} else {
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> insertTask(Task task) async {
|
||||
final database = await db;
|
||||
if (database != null) {
|
||||
await database.insert('Task', task.toMap());
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> updateTask(Task task) async {
|
||||
final database = await db;
|
||||
if (database != null) {
|
||||
await database
|
||||
.update('Task', task.toMap(), where: 'id = ?', whereArgs: [task.id]);
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> deleteTaskByid(int id) async {
|
||||
final database = await db;
|
||||
if (database != null) {
|
||||
await database.delete('Task', where: 'id = ?', whereArgs: [id]);
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> deleteTaskByTaskid(int taskid) async {
|
||||
final database = await db;
|
||||
if (database != null) {
|
||||
await database.delete('Task', where: 'taskid = ?', whereArgs: [taskid]);
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> deleteAllTasks() async {
|
||||
final database = await db;
|
||||
if (database != null) {
|
||||
await database.delete('Task', where: '1=1');
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,55 @@
|
||||
import 'package:timemanagerapp/database/MyDatebase.dart';
|
||||
import 'package:timemanagerapp/entity/Team.dart';
|
||||
|
||||
/**
|
||||
* 封装所有要用到的与团队相关的函数
|
||||
*/
|
||||
class TeamDao {
|
||||
//对外暴露实例
|
||||
static TeamDao getInstance() {
|
||||
return new TeamDao();
|
||||
}
|
||||
|
||||
var db = MyDatabase.initDatabase();
|
||||
|
||||
Future<List<Map<String, dynamic>>> getTeams() async {
|
||||
final database = await db;
|
||||
if (database != null) {
|
||||
return database.query('Team', orderBy: 'id ASC');
|
||||
} else {
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> insertTeam(Team team) async {
|
||||
final database = await db;
|
||||
if (database != null) {
|
||||
await database.insert('Team', team.toMap());
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> updateTeam(Team team) async {
|
||||
final database = await db;
|
||||
if (database != null) {
|
||||
await database
|
||||
.update('Team', team.toMap(), where: 'id = ?', whereArgs: [team.id]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Future<void> deleteTeamById(int id) async {
|
||||
final database = await db;
|
||||
if (database != null) {
|
||||
await database.delete('Team', where: 'id = ?', whereArgs: [id]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
Future<void> deleteAllTeams() async {
|
||||
final database = await db;
|
||||
if (database != null) {
|
||||
await database.delete('Team', where: '1=1');
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,65 @@
|
||||
import 'package:timemanagerapp/database/User/UserService.dart';
|
||||
import 'package:timemanagerapp/database/MyDatebase.dart';
|
||||
|
||||
import '../../entity/User.dart';
|
||||
|
||||
/**
|
||||
* 封装所有要用到的与用户相关的函数
|
||||
*/
|
||||
class UserDao {
|
||||
//对外暴露实例
|
||||
static UserDao getInstance() {
|
||||
return new UserDao();
|
||||
}
|
||||
|
||||
//获取操作业务的实例
|
||||
//UserService userService=UserService.getInstance();
|
||||
var db = MyDatabase.initDatabase();
|
||||
|
||||
Future<List<Map<String, dynamic>>> getUsers() async {
|
||||
final database = await db;
|
||||
if (database != null) {
|
||||
return await database.rawQuery('SELECT * FROM users');
|
||||
} else {
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> insertUser(User user) async {
|
||||
final database = await db;
|
||||
if (database != null) {
|
||||
await database.transaction((txn) async {
|
||||
// 插入数据
|
||||
//!!!注意字符串需加双引号
|
||||
await txn.rawInsert('''
|
||||
INSERT INTO users(teamId,username,password,role)
|
||||
VALUES(${user.teamId},"${user.username}","${user.password}",${user.role})
|
||||
''');
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> deleteUser(int id) async {
|
||||
final database = await db;
|
||||
if (database != null) {
|
||||
await database.transaction((txn) async {
|
||||
// 删除数据
|
||||
await txn.rawDelete('''
|
||||
DELETE FROM users WHERE id=$id
|
||||
''');
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> deleteAllUsers() async {
|
||||
final database = await db;
|
||||
if (database != null) {
|
||||
await database.transaction((txn) async {
|
||||
// 删除数据
|
||||
await txn.rawDelete('''
|
||||
DELETE FROM users
|
||||
''');
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,76 @@
|
||||
import 'package:timemanagerapp/database/MyDatebase.dart';
|
||||
import 'package:timemanagerapp/entity/Work.dart';
|
||||
|
||||
/**
|
||||
* 封装所有要用到的与团队工作相关的函数
|
||||
*/
|
||||
|
||||
class WorkDao {
|
||||
//对外暴露实例
|
||||
static WorkDao getInstance() {
|
||||
return new WorkDao();
|
||||
}
|
||||
|
||||
var db = MyDatabase.initDatabase();
|
||||
|
||||
Future<List<Map<String, dynamic>>> getWorks() async {
|
||||
final database = await db;
|
||||
if (database != null) {
|
||||
return database.query('Work', orderBy: 'id ASC');
|
||||
} else {
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
||||
Future<List<Map<String, dynamic>>> getWorksByTeamid(int teamid) async {
|
||||
final database = await db;
|
||||
if (database != null) {
|
||||
return database.query('Work', where: 'teamid = ?', whereArgs: [teamid], orderBy: 'id ASC');
|
||||
} else {
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> insertWork(Work work) async {
|
||||
final database = await db;
|
||||
if (database != null) {
|
||||
await database.insert('Work', work.toMap());
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> updateWork(Work work) async {
|
||||
final database = await db;
|
||||
if (database != null) {
|
||||
await database
|
||||
.update('Work', work.toMap(), where: 'id = ?', whereArgs: [work.id]);
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> deleteWorkByid(int id) async {
|
||||
final database = await db;
|
||||
if (database != null) {
|
||||
await database.delete('Work', where: 'id = ?', whereArgs: [id]);
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> deleteWorkByWorkid(int workid) async {
|
||||
final database = await db;
|
||||
if (database != null) {
|
||||
await database.delete('Work', where: 'workid = ?', whereArgs: [workid]);
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> deleteWorkByTeamid(int teamid) async {
|
||||
final database = await db;
|
||||
if (database != null) {
|
||||
await database.delete('Work', where: 'teamid = ?', whereArgs: [teamid]);
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> deleteAllWorks() async {
|
||||
final database = await db;
|
||||
if (database != null) {
|
||||
await database.delete('Work', where: '1=1');
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,75 @@
|
||||
class Clock {
|
||||
int? id;
|
||||
int userId;
|
||||
String text;
|
||||
String img;
|
||||
String music;
|
||||
DateTime continueTime;
|
||||
|
||||
Clock({
|
||||
this.id,
|
||||
required this.userId,
|
||||
required this.text,
|
||||
required this.img,
|
||||
required this.music,
|
||||
required this.continueTime,
|
||||
});
|
||||
|
||||
|
||||
Map<String, dynamic> toMap() {
|
||||
return {
|
||||
'userId': userId,
|
||||
'text': "$text",
|
||||
'img': "$img",
|
||||
'music': "$music",
|
||||
'continueTime': "${continueTime.toIso8601String()}",
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
// Getter methods
|
||||
int? get getId => id;
|
||||
|
||||
int get getUserId => userId;
|
||||
|
||||
String get getText => text;
|
||||
|
||||
String get getImg => img;
|
||||
|
||||
String get getMusic => music;
|
||||
|
||||
DateTime get getContinueTime => continueTime;
|
||||
|
||||
// Setter methods
|
||||
set setId(int newId) {
|
||||
id = newId;
|
||||
}
|
||||
|
||||
set setUserId(int newUserId) {
|
||||
userId = newUserId;
|
||||
}
|
||||
|
||||
set setText(String newText) {
|
||||
text = newText;
|
||||
}
|
||||
|
||||
set setImg(String newImg) {
|
||||
img = newImg;
|
||||
}
|
||||
|
||||
set setMusic(String newMusic) {
|
||||
music = newMusic;
|
||||
}
|
||||
|
||||
set setContinueTime(DateTime newContinueTime) {
|
||||
continueTime = newContinueTime;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// toString method
|
||||
@override
|
||||
String toString() {
|
||||
return 'Clock(id: $id, userId: $userId, text: $text, img: $img, music: $music, continueTime: $continueTime)';
|
||||
}
|
||||
}
|
||||
@ -1,19 +1,125 @@
|
||||
class Course {
|
||||
int? id;
|
||||
int? userId;
|
||||
int courseId;
|
||||
String name;
|
||||
double credit;
|
||||
String teacher;
|
||||
String location;
|
||||
String remark;
|
||||
DateTime start;
|
||||
DateTime end;
|
||||
|
||||
Course(
|
||||
{this.id = "",
|
||||
this.name = "",
|
||||
this.credit = -1,
|
||||
this.teacher = "",
|
||||
this.location = "",
|
||||
required this.start ,
|
||||
required this.end});
|
||||
|
||||
String id = "";
|
||||
String name = "";
|
||||
double credit = -1;
|
||||
String teacher = "";
|
||||
String location = "";
|
||||
DateTime start = DateTime.now();
|
||||
DateTime end = DateTime.now();
|
||||
Course({
|
||||
this.id,
|
||||
required this.userId,
|
||||
required this.courseId,
|
||||
required this.name,
|
||||
required this.credit,
|
||||
required this.teacher,
|
||||
required this.location,
|
||||
required this.remark,
|
||||
required this.start,
|
||||
required this.end,
|
||||
});
|
||||
|
||||
Map<String,dynamic> toMap(){
|
||||
return {
|
||||
'userId':userId,
|
||||
'courseId':courseId,
|
||||
'name':"$name",
|
||||
'credit':credit,
|
||||
'teacher':"$teacher",
|
||||
'location':"$location",
|
||||
'remark':"$remark",
|
||||
'start':"${start.toIso8601String()}",
|
||||
'end':"${end.toIso8601String()}"
|
||||
};
|
||||
}
|
||||
|
||||
//初始化任务在周几对应的x坐标
|
||||
var weekListPixel=[0,50,100,150,200,250,295];
|
||||
// Course(this.name, this.teacher, this.location, this.start, this.end);
|
||||
double getdy()
|
||||
{
|
||||
double y=((start.hour-7)*60+start.minute)*0.9;
|
||||
return y;
|
||||
}
|
||||
double getdx()
|
||||
{
|
||||
int x=start.weekday-1;
|
||||
return weekListPixel[x].toDouble();
|
||||
}
|
||||
double getHeight(){
|
||||
return ((end.hour-7)*60+end.minute)*0.9-this.getdy();
|
||||
}
|
||||
|
||||
|
||||
// Getter methods
|
||||
int? get getId => id;
|
||||
|
||||
int? get getUserId => userId;
|
||||
|
||||
int get getCourseId => courseId;
|
||||
|
||||
String get getName => name;
|
||||
|
||||
double get getCredit => credit;
|
||||
|
||||
String get getTeacher => teacher;
|
||||
|
||||
String get getLocation => location;
|
||||
|
||||
String get getRemark => remark;
|
||||
|
||||
DateTime get getStart => start;
|
||||
|
||||
DateTime get getEnd => end;
|
||||
|
||||
// Setter methods
|
||||
set setId(int newId) {
|
||||
id = newId;
|
||||
}
|
||||
|
||||
set setUserId(int newUserId) {
|
||||
userId = newUserId;
|
||||
}
|
||||
|
||||
set setCourseId(int newCourseId) {
|
||||
courseId = newCourseId;
|
||||
}
|
||||
|
||||
set setName(String newName) {
|
||||
name = newName;
|
||||
}
|
||||
|
||||
set setCredit(double newCredit) {
|
||||
credit = newCredit;
|
||||
}
|
||||
|
||||
set setTeacher(String newTeacher) {
|
||||
teacher = newTeacher;
|
||||
}
|
||||
|
||||
set setLocation(String newLocation) {
|
||||
location = newLocation;
|
||||
}
|
||||
|
||||
set setRemark(String newRemark) {
|
||||
remark = newRemark;
|
||||
}
|
||||
|
||||
set setStart(DateTime newStart) {
|
||||
start = newStart;
|
||||
}
|
||||
|
||||
set setEnd(DateTime newEnd) {
|
||||
end = newEnd;
|
||||
}
|
||||
|
||||
// toString method
|
||||
@override
|
||||
String toString() {
|
||||
return 'Course(id: $id, userid: $userId, courseId:$courseId, name: $name, credit: $credit, teacher: $teacher, location: $location, remark: $remark, start: $start, end: $end)';
|
||||
}
|
||||
}
|
||||
|
||||
@ -0,0 +1,117 @@
|
||||
class CourseForm{
|
||||
late String course;
|
||||
late double credit ;
|
||||
late String note;
|
||||
late int startWeek;
|
||||
late int endWeek;
|
||||
late int startTime;
|
||||
late int endTime;
|
||||
late String teacher;
|
||||
late String location;
|
||||
late List<int> selectedDays = [];
|
||||
|
||||
// CourseForm({
|
||||
// required this.course,
|
||||
// required this.credit,
|
||||
// required this.note,
|
||||
// required this.day,
|
||||
// required this.startWeek,
|
||||
// required this.endWeek,
|
||||
// required this.startTime,
|
||||
// required this.endTime,
|
||||
// required this.teacher,
|
||||
// required this.location,
|
||||
// required this.selectedDays,
|
||||
// });
|
||||
|
||||
String setCourse(String course){
|
||||
this.course = course;
|
||||
return this.course;
|
||||
}
|
||||
|
||||
double setCredit(double credit){
|
||||
this.credit = credit;
|
||||
return this.credit;
|
||||
}
|
||||
|
||||
String setNote (String note){
|
||||
this.note = note;
|
||||
return this.note;
|
||||
}
|
||||
|
||||
int setStartWeek (int startWeek){
|
||||
this.startWeek = startWeek;
|
||||
return this.startWeek;
|
||||
}
|
||||
|
||||
int setEndWeek (int endWeek){
|
||||
this.endWeek = endWeek;
|
||||
return this.endWeek;
|
||||
}
|
||||
|
||||
int setStartTime (int startTime){
|
||||
this.startTime = startTime;
|
||||
return this.startTime;
|
||||
}
|
||||
|
||||
int setEndTime (int endTime){
|
||||
this.endTime = endTime;
|
||||
return this.endTime;
|
||||
}
|
||||
|
||||
String setTeacher (String teacher){
|
||||
this.teacher = teacher;
|
||||
return this.teacher;
|
||||
}
|
||||
|
||||
String setLocation (String location){
|
||||
this.location = location;
|
||||
return this.location;
|
||||
}
|
||||
|
||||
List<int> setSelectedDays (List<int> selectedDays){
|
||||
this.selectedDays = selectedDays;
|
||||
return this.selectedDays;
|
||||
}
|
||||
|
||||
String getCourse(){
|
||||
return this.course;
|
||||
}
|
||||
|
||||
double getCredit(){
|
||||
return this.credit;
|
||||
}
|
||||
|
||||
String getNote(){
|
||||
return this.note;
|
||||
}
|
||||
|
||||
int getStartWeek(){
|
||||
return this.startWeek;
|
||||
}
|
||||
|
||||
int getEndWeek(){
|
||||
return this.endWeek;
|
||||
}
|
||||
|
||||
int getStartTime(){
|
||||
return this.startTime;
|
||||
}
|
||||
|
||||
int getEndTime(){
|
||||
return this.endTime;
|
||||
}
|
||||
|
||||
String getTeacher(){
|
||||
return this.teacher;
|
||||
}
|
||||
|
||||
String getLocation(){
|
||||
return this.location;
|
||||
}
|
||||
|
||||
List<int> getSelectedDays(){
|
||||
return this.selectedDays;
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,80 @@
|
||||
class Task {
|
||||
int? id;
|
||||
int userId;
|
||||
String content;
|
||||
int taskId;
|
||||
String name;
|
||||
DateTime startTime;
|
||||
DateTime endTime;
|
||||
|
||||
Task({
|
||||
this.id,
|
||||
required this.userId,
|
||||
required this.content,
|
||||
required this.taskId,
|
||||
required this.name,
|
||||
required this.startTime,
|
||||
required this.endTime,
|
||||
});
|
||||
|
||||
Map<String, dynamic> toMap() {
|
||||
return {
|
||||
'userId': userId,
|
||||
'content': "$content",
|
||||
'taskId': taskId,
|
||||
'name': "$name",
|
||||
'startTime': "${startTime.toIso8601String()}",
|
||||
'endTime': "${endTime.toIso8601String()}"
|
||||
};
|
||||
}
|
||||
|
||||
// Getter methods
|
||||
int? get getId => id;
|
||||
|
||||
int get getUserId => userId;
|
||||
|
||||
String get getContent => content;
|
||||
|
||||
int get getTaskId => taskId;
|
||||
|
||||
String get getName => name;
|
||||
|
||||
DateTime get getStartTime => startTime;
|
||||
|
||||
DateTime get getEndTime => endTime;
|
||||
|
||||
// Setter methods
|
||||
set setId(int newId) {
|
||||
id = newId;
|
||||
}
|
||||
|
||||
set setUserId(int newUserId) {
|
||||
userId = newUserId;
|
||||
}
|
||||
|
||||
set setContent(String newContent) {
|
||||
content = newContent;
|
||||
}
|
||||
|
||||
set setTaskId(int newTaskId) {
|
||||
taskId = newTaskId;
|
||||
}
|
||||
|
||||
set setName(String newName) {
|
||||
name = newName;
|
||||
}
|
||||
|
||||
set setStartTime(DateTime newStartTime) {
|
||||
startTime = newStartTime;
|
||||
}
|
||||
|
||||
set setEndTime(DateTime newEndTime) {
|
||||
endTime = newEndTime;
|
||||
}
|
||||
|
||||
// toString method
|
||||
@override
|
||||
String toString() {
|
||||
return 'Task(id: $id, userId: $userId, content: $content, taskId: $taskId, name: $name, startTime: $startTime, endTime: $endTime)';
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,53 @@
|
||||
class Team {
|
||||
int? id;
|
||||
int leaderId;
|
||||
String teamName;
|
||||
int maxNumber;
|
||||
|
||||
Team({
|
||||
this.id,
|
||||
required this.leaderId,
|
||||
required this.teamName,
|
||||
required this.maxNumber,
|
||||
});
|
||||
|
||||
Map<String, dynamic> toMap() {
|
||||
return {
|
||||
'leaderId': leaderId,
|
||||
'teamName': "$teamName",
|
||||
'maxNumber': maxNumber,
|
||||
};
|
||||
}
|
||||
|
||||
// Getter methods
|
||||
int? get getId => id;
|
||||
|
||||
int get getLeaderId => leaderId;
|
||||
|
||||
String get getTeamName => teamName;
|
||||
|
||||
int get getMaxNumber => maxNumber;
|
||||
|
||||
// Setter methods
|
||||
set setId(int newId) {
|
||||
id = newId;
|
||||
}
|
||||
|
||||
set setLeaderId(int newLeaderId) {
|
||||
leaderId = newLeaderId;
|
||||
}
|
||||
|
||||
set setTeamName(String newTeamName) {
|
||||
teamName = newTeamName;
|
||||
}
|
||||
|
||||
set setMaxNumber(int newMaxNumber) {
|
||||
maxNumber = newMaxNumber;
|
||||
}
|
||||
|
||||
// toString method
|
||||
@override
|
||||
String toString() {
|
||||
return 'Team(id: $id, leaderId:$leaderId, teamName:$teamName, maxNumber: $maxNumber)';
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,98 @@
|
||||
class Work {
|
||||
int? id;
|
||||
int userId;
|
||||
String status;
|
||||
String workContent;
|
||||
int teamId;
|
||||
int functionaryId;
|
||||
int workId;
|
||||
DateTime endTime;
|
||||
DateTime startTime;
|
||||
|
||||
Work({
|
||||
this.id,
|
||||
required this.userId,
|
||||
required this.status,
|
||||
required this.workContent,
|
||||
required this.teamId,
|
||||
required this.functionaryId,
|
||||
required this.workId,
|
||||
required this.endTime,
|
||||
required this.startTime,
|
||||
});
|
||||
|
||||
Map<String, dynamic> toMap() {
|
||||
return {
|
||||
'userId': userId,
|
||||
'status': "$status",
|
||||
'workContent': "$workContent",
|
||||
'teamId': teamId,
|
||||
'functionaryId': functionaryId,
|
||||
'workId': workId,
|
||||
'endTime': "${endTime.toIso8601String()}",
|
||||
'startTime': "${startTime.toIso8601String()}"
|
||||
};
|
||||
}
|
||||
|
||||
// Getter methods
|
||||
int? get getId => id;
|
||||
|
||||
int get getUserId => userId;
|
||||
|
||||
String get getStatus => status;
|
||||
|
||||
String get getWorkContent => workContent;
|
||||
|
||||
int get getTeamId => teamId;
|
||||
|
||||
int get getFunctionaryId => functionaryId;
|
||||
|
||||
int get getWorkId => workId;
|
||||
|
||||
DateTime get getEndTime => endTime;
|
||||
|
||||
DateTime get getStartTime => startTime;
|
||||
|
||||
// Setter methods
|
||||
set setId(int newId) {
|
||||
id = newId;
|
||||
}
|
||||
|
||||
set setUserId(int newUserId) {
|
||||
userId = newUserId;
|
||||
}
|
||||
|
||||
set setStatus(String newStatus) {
|
||||
status = newStatus;
|
||||
}
|
||||
|
||||
set setWorkContent(String newWorkContent) {
|
||||
workContent = newWorkContent;
|
||||
}
|
||||
|
||||
set setTeamId(int newTeamId) {
|
||||
teamId = newTeamId;
|
||||
}
|
||||
|
||||
set setFunctionaryId(int newFunctionaryId) {
|
||||
functionaryId = newFunctionaryId;
|
||||
}
|
||||
|
||||
set setWorkId(int newWorkId) {
|
||||
workId = newWorkId;
|
||||
}
|
||||
|
||||
set setEndTime(DateTime newEndTime) {
|
||||
endTime = newEndTime;
|
||||
}
|
||||
|
||||
set setStartTime(DateTime newStartTime) {
|
||||
startTime = newStartTime;
|
||||
}
|
||||
|
||||
// toString method
|
||||
@override
|
||||
String toString() {
|
||||
return 'Work(id: $id, userId:$userId, status: $status, workContent: $workContent, teamId: $teamId, functionaryId: $functionaryId, workId: $workId, endTime: $endTime, startTime: $startTime)';
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,15 @@
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:timemanagerapp/wighets/AddCourseFormWidget.dart';
|
||||
|
||||
class AddCourseRoute extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
appBar: AppBar(
|
||||
title: Text('添加自定义课程'),
|
||||
),
|
||||
body: AddCourseFormWidget(),
|
||||
);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,16 @@
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:timemanagerapp/wighets/AddCourseFormWidget.dart';
|
||||
import 'package:timemanagerapp/wighets/TimetableWighet.dart';
|
||||
|
||||
class TimetableRoute extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
appBar: AppBar(
|
||||
title: Text('时间表'),
|
||||
),
|
||||
body: TimetableWidget(),
|
||||
);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,36 @@
|
||||
import 'dart:developer';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
import 'package:timemanagerapp/setting/Setting.dart';
|
||||
import 'package:timemanagerapp/util/GetCourseByLogin.dart';
|
||||
import 'package:timemanagerapp/wighets/AddCourseFormWidget.dart';
|
||||
import 'package:timemanagerapp/wighets/LoginWidget.dart';
|
||||
import 'package:timemanagerapp/wighets/TimetableWighet.dart';
|
||||
|
||||
|
||||
init() async {
|
||||
WidgetsFlutterBinding.ensureInitialized();
|
||||
await Setting.init();
|
||||
}
|
||||
|
||||
void main() async {
|
||||
await init();
|
||||
runApp(MyApp());
|
||||
|
||||
|
||||
}
|
||||
|
||||
class MyApp extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return MaterialApp(
|
||||
home: Scaffold(
|
||||
appBar: AppBar(
|
||||
title: Text('课表'),
|
||||
),
|
||||
body: AddCourseFormWidget(),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@ -1,62 +0,0 @@
|
||||
List<String> parseComplexTime(String time) {
|
||||
// 去除大括号和大括号内的内容
|
||||
time = time.replaceAll(RegExp(r'\{.*?\}'), '');
|
||||
|
||||
// 去除星期信息
|
||||
time = time.replaceAll(RegExp(r'星期[一二三四五六日]'), '');
|
||||
|
||||
// 去除“第”和“节”字样
|
||||
time = time.replaceAll('第', '').replaceAll('节', '');
|
||||
|
||||
// 将多个连续空格替换为单个空格
|
||||
time = time.replaceAll(RegExp(r'\s+'), ' ').trim();
|
||||
|
||||
// 将时间段拆分为多个子段
|
||||
final segments = time.split('、');
|
||||
|
||||
// 用于存储解析后的时间段
|
||||
final parsedSegments = <String>[];
|
||||
|
||||
for (final segment in segments) {
|
||||
// 分割时间段和周数信息
|
||||
final parts = segment.split('{');
|
||||
final timePart = parts[0].trim();
|
||||
final weekPart = parts.length > 1 ? parts[1].replaceAll('}', '').trim() : '';
|
||||
|
||||
if (weekPart.isEmpty) {
|
||||
parsedSegments.add(timePart);
|
||||
} else {
|
||||
final weekRanges = weekPart.split(',');
|
||||
for (final range in weekRanges) {
|
||||
final weeks = range.split('-');
|
||||
if (weeks.length == 2) {
|
||||
final startWeek = int.tryParse(weeks[0]);
|
||||
final endWeek = int.tryParse(weeks[1]);
|
||||
if (startWeek != null && endWeek != null) {
|
||||
for (int week = startWeek; week <= endWeek; week++) {
|
||||
parsedSegments.add('$timePart {第$week周}');
|
||||
}
|
||||
}
|
||||
} else if (weeks.length == 1) {
|
||||
final week = int.tryParse(weeks[0]);
|
||||
if (week != null) {
|
||||
parsedSegments.add('$timePart {第$week周}');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return parsedSegments;
|
||||
}
|
||||
|
||||
void main() {
|
||||
// 示例时间字符串
|
||||
String time1 = '星期一第5-6节{16周}、星期二第5-6节{7-9周}、星期四第3-4节{1-11周,13-16周}';
|
||||
|
||||
// 解析并打印处理后的时间字符串
|
||||
final parsedTimes = parseComplexTime(time1);
|
||||
for (final parsedTime in parsedTimes) {
|
||||
print(parsedTime);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,171 @@
|
||||
/*
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:timemanagerapp/wighets/AddCourseFormWidget.dart';
|
||||
|
||||
void main() {
|
||||
runApp(MyApp());
|
||||
}
|
||||
|
||||
class MyApp extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return MaterialApp(
|
||||
home: Scaffold(
|
||||
appBar: AppBar(
|
||||
title: Text('添加课程'),
|
||||
),
|
||||
body: AddCourseFormWidget(),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
*/
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:sqflite/sqflite.dart';
|
||||
import 'package:timemanagerapp/controller/CourseController.dart';
|
||||
import 'package:timemanagerapp/controller/UserController.dart';
|
||||
import 'package:timemanagerapp/entity/Course.dart';
|
||||
import 'package:timemanagerapp/entity/User.dart';
|
||||
import 'package:timemanagerapp/database/MyDatebase.dart';
|
||||
|
||||
void main() {
|
||||
runApp(MyApp());
|
||||
}
|
||||
|
||||
class MyApp extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return MaterialApp(
|
||||
title: 'SQLite Demo',
|
||||
theme: ThemeData(
|
||||
primarySwatch: Colors.blue,
|
||||
),
|
||||
home: HomePage(),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class HomePage extends StatefulWidget {
|
||||
@override
|
||||
_HomePageState createState() => _HomePageState();
|
||||
}
|
||||
|
||||
class _HomePageState extends State<HomePage> {
|
||||
late UserController userController;
|
||||
late CourseController courseController;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
MyDatabase.initDatabase();
|
||||
userController = UserController.getInstance();
|
||||
courseController = CourseController.getInstance();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
appBar: AppBar(
|
||||
title: Text('SQLite Demo'),
|
||||
),
|
||||
body: Center(
|
||||
child: Column(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
ElevatedButton(
|
||||
onPressed: userController.deleteAllUsers,
|
||||
child: Text('删除用户'),
|
||||
),
|
||||
ElevatedButton(
|
||||
onPressed: () => userController.insertUser(User(
|
||||
teamId: 3231,
|
||||
username: "嘉豪急啊急啊",
|
||||
password: "23243",
|
||||
role: 2341)),
|
||||
child: Text('插入用户'),
|
||||
),
|
||||
ElevatedButton(
|
||||
onPressed: () {
|
||||
userController.getUsers().then((users) {
|
||||
userController.getUsers().then((courses) {
|
||||
print(courses.length);
|
||||
});
|
||||
showDialog(
|
||||
context: context,
|
||||
builder: (context) {
|
||||
return AlertDialog(
|
||||
title: Text('用户列表'),
|
||||
content: SingleChildScrollView(
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: users
|
||||
.map((user) => ListTile(
|
||||
title: Text(user['username']),
|
||||
subtitle: Text(user.toString()),
|
||||
))
|
||||
.toList(),
|
||||
),
|
||||
),
|
||||
);
|
||||
},
|
||||
);
|
||||
});
|
||||
},
|
||||
child: Text('获取用户列表'),
|
||||
),
|
||||
ElevatedButton(
|
||||
onPressed: courseController.deleteAllCourses,
|
||||
child: Text('删除课程'),
|
||||
),
|
||||
ElevatedButton(
|
||||
onPressed: () => courseController.autoImportCours(),
|
||||
child: Text('导入课程(待开发)'),
|
||||
),
|
||||
ElevatedButton(
|
||||
onPressed: () => courseController.insertCourse(Course(
|
||||
userId: 1,
|
||||
courseId: 2,
|
||||
name: "courstest",
|
||||
credit: 3,
|
||||
teacher: "嘉豪",
|
||||
location: "638",
|
||||
remark: "威威",
|
||||
start: DateTime.now(),
|
||||
end: DateTime.now())),
|
||||
child: Text('插入课程'),
|
||||
),
|
||||
ElevatedButton(
|
||||
onPressed: () {
|
||||
courseController.getCourses().then((courses) {
|
||||
print(courses.length);
|
||||
});
|
||||
courseController.getCourses().then((courses) {
|
||||
showDialog(
|
||||
context: context,
|
||||
builder: (context) {
|
||||
return AlertDialog(
|
||||
title: Text('课程列表'),
|
||||
content: SingleChildScrollView(
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: courses
|
||||
.map((course) => ListTile(
|
||||
title: Text(course['name']),
|
||||
subtitle: Text(course.toString()),
|
||||
))
|
||||
.toList(),
|
||||
),
|
||||
),
|
||||
);
|
||||
},
|
||||
);
|
||||
});
|
||||
},
|
||||
child: Text('获取课程列表'),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,36 @@
|
||||
import 'dart:developer';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
import 'package:timemanagerapp/setting/Setting.dart';
|
||||
import 'package:timemanagerapp/util/GetCourseByLogin.dart';
|
||||
import 'package:timemanagerapp/wighets/AddCourseFormWidget.dart';
|
||||
import 'package:timemanagerapp/wighets/LoginWidget.dart';
|
||||
import 'package:timemanagerapp/wighets/TimetableWighet.dart';
|
||||
|
||||
|
||||
init() async {
|
||||
WidgetsFlutterBinding.ensureInitialized();
|
||||
await Setting.init();
|
||||
}
|
||||
|
||||
void main() async {
|
||||
await init();
|
||||
runApp(MyApp());
|
||||
|
||||
|
||||
}
|
||||
|
||||
class MyApp extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return MaterialApp(
|
||||
home: Scaffold(
|
||||
appBar: AppBar(
|
||||
title: Text('课表'),
|
||||
),
|
||||
body: TimetableWidget(),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,3 @@
|
||||
int generateId() {
|
||||
return DateTime.now().millisecondsSinceEpoch;
|
||||
}
|
||||
@ -0,0 +1,27 @@
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
/**
|
||||
* @desc 分割线
|
||||
* @author xiedong
|
||||
* @date 2020-02-24.
|
||||
*/
|
||||
|
||||
class SpaceWidget extends StatelessWidget {
|
||||
double height, width;
|
||||
|
||||
SpaceWidget({
|
||||
this.height = 1,
|
||||
this.width = 1,
|
||||
}) : super();
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return
|
||||
Container(
|
||||
|
||||
height: height,
|
||||
width: width,
|
||||
color: Colors.transparent,
|
||||
);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,181 @@
|
||||
/*
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:timemanagerapp/wighets/AddCourseFormWidget.dart';
|
||||
|
||||
void main() {
|
||||
runApp(MyApp());
|
||||
}
|
||||
|
||||
class MyApp extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return MaterialApp(
|
||||
home: Scaffold(
|
||||
appBar: AppBar(
|
||||
title: Text('添加课程'),
|
||||
),
|
||||
body: AddCourseFormWidget(),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
*/
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:sqflite/sqflite.dart';
|
||||
import 'package:timemanagerapp/controller/CourseController.dart';
|
||||
import 'package:timemanagerapp/controller/UserController.dart';
|
||||
import 'package:timemanagerapp/entity/Course.dart';
|
||||
import 'package:timemanagerapp/entity/User.dart';
|
||||
import 'package:timemanagerapp/database/MyDatebase.dart';
|
||||
import 'package:timemanagerapp/wighets/TimetableWighet.dart';
|
||||
|
||||
import '../main.dart';
|
||||
import '../ruters/AddCourseRoute.dart';
|
||||
import '../ruters/TimetableRoute.dart';
|
||||
import '../tests/database_test.dart';
|
||||
import 'AddCourseFormWidget.dart';
|
||||
|
||||
class TestWidget extends StatefulWidget {
|
||||
const TestWidget({Key? key}) : super(key: key);
|
||||
|
||||
@override
|
||||
_HomePageState createState() => _HomePageState();
|
||||
}
|
||||
|
||||
class _HomePageState extends State<TestWidget> {
|
||||
late UserController userController;
|
||||
late CourseController courseController;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
MyDatabase.initDatabase();
|
||||
userController = UserController.getInstance();
|
||||
courseController = CourseController.getInstance();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Center(
|
||||
child: Column(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
ElevatedButton(
|
||||
onPressed: userController.deleteAllUsers,
|
||||
child: Text('删除用户'),
|
||||
),
|
||||
ElevatedButton(
|
||||
onPressed: () => userController.insertUser(User(
|
||||
teamId: 3231,
|
||||
username: "嘉豪急啊急啊",
|
||||
password: "23243",
|
||||
role: 2341)),
|
||||
child: Text('插入用户'),
|
||||
),
|
||||
ElevatedButton(
|
||||
onPressed: () {
|
||||
userController.getUsers().then((users) {
|
||||
showDialog(
|
||||
context: context,
|
||||
builder: (context) {
|
||||
return AlertDialog(
|
||||
title: Text('用户列表'),
|
||||
content: SingleChildScrollView(
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: users
|
||||
.map((user) => ListTile(
|
||||
title: Text(user['username']),
|
||||
subtitle: Text(user.toString()),
|
||||
))
|
||||
.toList(),
|
||||
),
|
||||
),
|
||||
);
|
||||
},
|
||||
);
|
||||
});
|
||||
},
|
||||
child: Text('获取用户列表'),
|
||||
),
|
||||
ElevatedButton(
|
||||
onPressed: courseController.deleteAllCourses,
|
||||
child: Text('删除课程'),
|
||||
),
|
||||
ElevatedButton(
|
||||
onPressed: () => courseController.autoImportCours(),
|
||||
child: Text('导入课程(待开发)'),
|
||||
),
|
||||
ElevatedButton(
|
||||
onPressed: () => courseController.insertCourse(Course(
|
||||
userId: 1,
|
||||
courseId: 2,
|
||||
name: "courstest",
|
||||
credit: 3,
|
||||
teacher: "嘉豪",
|
||||
location: "638",
|
||||
remark: "威威",
|
||||
start: DateTime.now(),
|
||||
end: DateTime.now())),
|
||||
child: Text('插入课程'),
|
||||
),
|
||||
ElevatedButton(
|
||||
onPressed: () {
|
||||
// 导航到AddCourseFormWidget页面
|
||||
Navigator.push(
|
||||
context,
|
||||
MaterialPageRoute(builder: (context){
|
||||
return AddCourseRoute();
|
||||
},
|
||||
),
|
||||
);
|
||||
},
|
||||
child: Text('添加自定义课程'),
|
||||
),
|
||||
ElevatedButton(
|
||||
onPressed: () {
|
||||
courseController.getCourses().then((courses) {
|
||||
print(courses.length);
|
||||
});
|
||||
courseController.getCourses().then((courses) {
|
||||
showDialog(
|
||||
context: context,
|
||||
builder: (context) {
|
||||
return AlertDialog(
|
||||
title: Text('课程列表'),
|
||||
content: SingleChildScrollView(
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: courses
|
||||
.map((course) => ListTile(
|
||||
title: Text(course['name']),
|
||||
subtitle: Text(course.toString()),
|
||||
))
|
||||
.toList(),
|
||||
),
|
||||
),
|
||||
);
|
||||
},
|
||||
);
|
||||
});
|
||||
},
|
||||
child: Text('获取课程列表'),
|
||||
),
|
||||
ElevatedButton(
|
||||
onPressed: () {
|
||||
// 导航到AddCourseFormWidget页面
|
||||
Navigator.push(
|
||||
context,
|
||||
MaterialPageRoute(builder: (context){
|
||||
return TimetableRoute();
|
||||
},
|
||||
),
|
||||
);
|
||||
},
|
||||
child: Text('查看时间表'),
|
||||
)
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
Loading…
Reference in new issue