ScheduleForm.dart

zhangrenshu
LRC 3 years ago
parent 944c25577b
commit 6821622f48

@ -0,0 +1,135 @@
import 'package:timemanagerapp/entity/ScheduleForm.dart';
import '../database/dao/TaskDao.dart';
import '../entity/Task.dart';
import '../setting/Setting.dart';
import '../util/dataUtil.dart';
import 'NetWorkController.dart';
class TaskController {
IdGenerator idGenerator = IdGenerator();
List<Task> taskList = []; //courseList
NetWorkController netWorkController = NetWorkController();
DateTime termstartdate = Setting.startdate; //Setting.getStartDate();
Future<List<Task>> getTasks() async {
List<Map<String, dynamic>> taskMaps = await TaskDao().getTasks();
List<Task> tasks = []; // Task
for (var taskMap in taskMaps) {
// 使TaskMapTask
Task task = Task(
id: taskMap['id'],
userId: taskMap['userId'],
content: taskMap['content'],
taskId: taskMap['taskId'],
name: taskMap['name'],
startTime: DateTime.parse(taskMap['startTime']),
endTime: DateTime.parse(taskMap['endTime']),
);
tasks.add(task);
}
taskList = tasks; // Task
return taskList;
}
//addscheduleForm
Future<void> addScheduleForm(ScheduleForm scheduleForm) async {
List<Task> taskListToInsert = [];
// for (int week = scheduleForm.getStartWeek(); week <= scheduleForm.getEndWeek(); week++) {
// for(int day in scheduleForm.selectedDays){
// //
// final startDate = termstartdate.add(Duration(
// days: (7 * (week - 1) + day! - 1),
// hours: int.parse(raspiyane[scheduleForm.getStartTime() - 1][0].split(':')[0]),
// minutes: int.parse(raspiyane[scheduleForm.getStartTime() - 1][0].split(':')[1]),
// ));
//
// final endDate = termstartdate.add(Duration(
// days: (7 * (week - 1) + day! - 1),
// hours: int.parse(raspiyane[scheduleForm.getEndTime() - 1][1].split(':')[0]),
// minutes: int.parse(raspiyane[scheduleForm.getEndTime() - 1][1].split(':')[1]),
// ));
// int taskId = await idGenerator.generateId();
// Task task = Task(
// id:await idGenerator.generateId(),
// name: scheduleForm.getTask(),
// userId: Setting.user!.getId!,
// content: scheduleForm.getContent(),
// taskId: taskId,
// startTime: startDate,
// endTime: endDate,
// );
// taskListToInsert.add(task);
// }
await insertTaskList(taskListToInsert);
}
// 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]),
// ));
// int courseId = await idGenerator.generateId();
// Course course = Course(
// id:await idGenerator.generateId(),
// name: courseForm.getCourse(),
// userId: Setting.user!.getId!,
// courseId: courseId,
// teacher: courseForm.getTeacher(),
// location: courseForm.getLocation(),
// start: startDate,
// end: endDate,
// credit: courseForm.getCredit(),
// remark: courseForm.getNote()
// );
// courseListToInsert.add(course);
// }
// }
// await insertCourseList(courseListToInsert);
// }
Future<int> insertTask(Task task) async {
return await TaskDao().insertTask(task);
}
Future<int> insertTaskList(List<Task> taskList) async {
int result = 0;
for (Task task in taskList) {
result += await TaskDao().insertTask(task);
}
return result;
}
//delete
Future<int> deleteTaskByid(int id) async {
return await TaskDao().deleteTaskByid(id);
}
Future<int> deleteTaskByTaskid(int taskid) async {
return await TaskDao().deleteTaskByTaskid(taskid);
}
Future<int> deleteAllTasks() async {
return await TaskDao().deleteAllTasks();
}
//update
Future<int> updateTask(Task task) async {
return await TaskDao().updateTask(task);
}
}

@ -18,39 +18,44 @@ class TaskDao {
}
}
Future<void> insertTask(Task task) async {
Future<int> insertTask(Task task) async {
final database = await db;
if (database != null) {
await database.insert('Task', task.toMap());
return await database.insert('Task', task.toMap());
}
return 0;
}
Future<void> updateTask(Task task) async {
Future<int> updateTask(Task task) async {
final database = await db;
if (database != null) {
await database
return await database
.update('Task', task.toMap(), where: 'id = ?', whereArgs: [task.id]);
}
return 0;
}
Future<void> deleteTaskByid(int id) async {
Future<int> deleteTaskByid(int id) async {
final database = await db;
if (database != null) {
await database.delete('Task', where: 'id = ?', whereArgs: [id]);
return await database.delete('Task', where: 'id = ?', whereArgs: [id]);
}
return 0;
}
Future<void> deleteTaskByTaskid(int taskid) async {
Future<int> deleteTaskByTaskid(int taskid) async {
final database = await db;
if (database != null) {
await database.delete('Task', where: 'taskid = ?', whereArgs: [taskid]);
return await database.delete('Task', where: 'taskid = ?', whereArgs: [taskid]);
}
return 0;
}
Future<void> deleteAllTasks() async {
Future<int> deleteAllTasks() async {
final database = await db;
if (database != null) {
await database.delete('Task', where: '1=1');
return await database.delete('Task', where: '1=1');
}
return 0;
}
}

@ -1,82 +1,88 @@
class ScheduleForm {
int? id;
int userId;
String content;
int ScheduleFormId;
String name;
DateTime startTime;
DateTime endTime;
String type;
ScheduleForm({
this.id,
required this.userId,
required this.content,
required this.ScheduleFormId,
required this.name,
required this.startTime,
required this.endTime,
required this.type
});
late String content;
late String name;
late int startWeek;
late int endWeek;
late DateTime startTime;
late DateTime endTime;
late List<int> selectedDays = [];
// ScheduleForm({
// this.id,
// required this.userId,
// required this.content,
// required this.scheduleFormId,
// required this.name,
// required this.startTime,
// required this.endTime,
// required this.type
// });
// Map<String, dynamic> toMap() {
// return {
// 'userId': userId,
// 'content': "$content",
// 'scheduleFormId': scheduleFormId,
// 'name': "$name",
// 'startTime': "${startTime.toIso8601String()}",
// 'endTime': "${endTime.toIso8601String()}"
// };
// }
Map<String, dynamic> toMap() {
return {
'userId': userId,
'content': "$content",
'ScheduleFormId': ScheduleFormId,
'name': "$name",
'startTime': "${startTime.toIso8601String()}",
'endTime': "${endTime.toIso8601String()}"
'startWeek': startWeek,
'endWeek': endWeek,
'startTime': startTime,
'endTime': endTime,
'selectedDays': selectedDays
};
}
// Getter methods
int? get getId => id;
int get getUserId => userId;
String get getContent => content;
int get getScheduleFormId => ScheduleFormId;
String get getName => name;
int get getStartWeek => startWeek;
int get getEndWeek => endWeek;
DateTime get getStartTime => startTime;
DateTime get getEndTime => endTime;
String get getName => name;
String get getContent => content;
List<int> get getSelectedDays => selectedDays;
// Setter methods
set setId(int newId) {
id = newId;
set setStartWeek(int newStartWeek) {
startWeek = newStartWeek;
}
set setUserId(int newUserId) {
userId = newUserId;
set setEndWeek(int newEndWeek) {
endWeek = newEndWeek;
}
set setContent(String newContent) {
content = newContent;
set setStartTime(DateTime newStartTime) {
startTime = newStartTime;
}
set setScheduleFormId(int newScheduleFormId) {
ScheduleFormId = newScheduleFormId;
set setEndTime(DateTime newEndTime) {
endTime = newEndTime;
}
set setName(String newName) {
name = newName;
}
set setStartTime(DateTime newStartTime) {
startTime = newStartTime;
set setContent(String newContent) {
content = newContent;
}
set setEndTime(DateTime newEndTime) {
endTime = newEndTime;
set setSelectedDays(List<int> newSelectedDays) {
selectedDays = newSelectedDays;
}
// toString method
@override
String toString() {
return 'ScheduleForm(id: $id, userId: $userId, content: $content, ScheduleFormId: $ScheduleFormId, name: $name, startTime: $startTime, endTime: $endTime)';
return 'ScheduleForm(content: $content, name: $name, startWeek: $startWeek, endWeek: $endWeek, startTime: $startTime, endTime: $endTime, selectedDays: $selectedDays)';
}
}

@ -20,9 +20,6 @@ class MyApp extends StatelessWidget {
Setting.deviceWidth = MediaQuery.of(context).size.width;
return MaterialApp(
home: Scaffold(
// appBar: AppBar(
// title: Text('测试'),
// ),
body: HomeWidget(),
),
);

@ -3,13 +3,17 @@ import 'package:flutter/material.dart';
import 'package:timemanagerapp/widgets/AddScheduleFormWidget.dart';
class AddScheduleRoute extends StatelessWidget {
const AddScheduleRoute({Key? key,required this.scheduleType}) : super(key: key);
final String scheduleType;//taskwork
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('添加自定义个人计划'),
),
body: AddScheduleFormWidget(),
body: AddScheduleFormWidget(scheduleType: scheduleType,),
);
}
}

@ -1,10 +1,13 @@
import 'package:flutter/material.dart';
import 'package:multi_select_flutter/dialog/multi_select_dialog_field.dart';
import 'package:multi_select_flutter/util/multi_select_item.dart';
import 'package:timemanagerapp/controller/CourseController.dart';
import 'package:timemanagerapp/entity/CourseForm.dart';
import 'package:timemanagerapp/controller/TaskController.dart';
import 'package:timemanagerapp/entity/ScheduleForm.dart';
import 'package:timemanagerapp/entity/Task.dart';
class AddScheduleFormWidget extends StatefulWidget {
const AddScheduleFormWidget({Key? key}) : super(key: key);
const AddScheduleFormWidget({Key? key,required this.scheduleType}) : super(key: key);
final String scheduleType;//taskwork
@override
_AddScheduleFormWidgetState createState() => _AddScheduleFormWidgetState();
@ -12,20 +15,18 @@ class AddScheduleFormWidget extends StatefulWidget {
class _AddScheduleFormWidgetState extends State<AddScheduleFormWidget> {
CourseController courseController = CourseController();
TaskController taskController = TaskController();
final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
CourseForm courseForm = CourseForm();
String course = '';
String credit = '';
String note = '';
ScheduleForm scheduleForm = ScheduleForm();
//ScheduleForm
String name = '';
String content = '';
String startWeek = '1';
String endWeek = '12';
String startTime = '1';
String endTime = '2';
String teacher = '';
String location = '';
DateTime startTime = DateTime.now();
DateTime endTime = DateTime.now();
List<String> selectedDays = [];
List<MultiSelectItem<String>> daysList = [
MultiSelectItem('周一', ''),
@ -58,33 +59,28 @@ class _AddScheduleFormWidgetState extends State<AddScheduleFormWidget> {
child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch, //
children: <Widget>[
TextFormField( //
decoration: InputDecoration(labelText: '课程*'), //
onSaved: (value) => course = value ?? '', //
TextFormField( //
decoration: InputDecoration(labelText: '计划名称*'), //
onSaved: (value) => name = value ?? '', //
validator: (value) { //
if (value == null || value.isEmpty) {
return '课程名为必填项';
return '计划名称为必填项';
}
return null;
},
),
SizedBox(height: 16.0),//
TextFormField(
decoration: InputDecoration(labelText: '学分'),
onSaved: (value) => credit = value ?? '',
),
SizedBox(height: 16.0),
TextFormField(
decoration: InputDecoration(labelText: '备注'),
onSaved: (value) => note = value ?? '',
decoration: InputDecoration(labelText: '内容'),
onSaved: (value) => content = value ?? '',
),
SizedBox(height: 16.0),
MultiSelectDialogField<String>(
items: daysList,
title: Text('上课日*'),
title: Text('星期几*'),
validator: (values) {
if (values == null || values.isEmpty) {
return '上课日为必填项';
return '星期几为必填项';
}
return null;
},
@ -117,59 +113,63 @@ class _AddScheduleFormWidgetState extends State<AddScheduleFormWidget> {
},
),
SizedBox(height: 16.0),
DropdownButtonFormField<String>(
value: startTime,
onChanged: (newValue) {
setState(() {
startTime = newValue ?? '';
});
},
items: List.generate(12, (index) => (index + 1).toString())
.map((time) => DropdownMenuItem(
value: time,
child: Text(time),
))
.toList(),
decoration: InputDecoration(labelText: '上课时间'),
validator: (value) {
if (value == null || value.isEmpty) {
return '上课时间为必填项';
TextFormField(
decoration: InputDecoration(
labelText: '开始时间',
),
controller: TextEditingController(
text: startTime != null
? '${startTime!.hour}:${startTime!.minute}'
: '',
),
readOnly: true,
onTap: () async {
final TimeOfDay? pickedTime = await showTimePicker(
context: context,
initialTime: TimeOfDay.now(),
);
if (pickedTime != null) {
setState(() {
startTime = DateTime(
DateTime.now().year,
DateTime.now().month,
DateTime.now().day,
pickedTime.hour,
pickedTime.minute,
);
});
}
return null;
},
),
SizedBox(height: 16.0),
DropdownButtonFormField<String>(
value: endTime,
onChanged: (newValue) {
setState(() {
endTime = newValue ?? '';
});
},
items: List.generate(12, (index) => (index + 1).toString())
.map((time) => DropdownMenuItem(
value: time,
child: Text(time),
))
.toList(),
decoration: InputDecoration(labelText: '下课时间*'),
validator: (value) {
if (value == null || value.isEmpty) {
return '下课时间为必填项';
TextFormField(
decoration: InputDecoration(
labelText: '结束时间',
),
controller: TextEditingController(
text: endTime != null
? '${endTime!.hour}:${endTime!.minute}'
: '',
),
readOnly: true,
onTap: () async {
final TimeOfDay? pickedTime = await showTimePicker(
context: context,
initialTime: TimeOfDay.now(),
);
if (pickedTime != null) {
setState(() {
endTime = DateTime(
DateTime.now().year,
DateTime.now().month,
DateTime.now().day,
pickedTime.hour,
pickedTime.minute,
);
});
}
return null;
},
),
SizedBox(height: 16.0),
TextFormField(
decoration: InputDecoration(labelText: '老师'),
onSaved: (value) => teacher = value ?? '',
),
SizedBox(height: 16.0),
TextFormField(
decoration: InputDecoration(labelText: '地点'),
onSaved: (value) => location = value ?? '',
),
SizedBox(height: 24.0),
Row( //
mainAxisAlignment: MainAxisAlignment.spaceAround, //
@ -187,17 +187,14 @@ class _AddScheduleFormWidgetState extends State<AddScheduleFormWidget> {
if (_formKey.currentState!.validate()) {
_formKey.currentState!.save();
//
courseForm.course = course;
courseForm.credit = double.parse(credit);
courseForm.note = note;
courseForm.location = location;
courseForm.selectedDays = selectedDays.map((e) => weekdayMap[e]!).toList();
courseForm.startWeek = int.parse(startWeek);
courseForm.endWeek = int.parse(endWeek);
courseForm.startTime = int.parse(startTime);
courseForm.endTime = int.parse(endTime);
courseForm.teacher = teacher;
courseController.addCourseForm(courseForm).then((value) => Navigator.pop(context)); //
scheduleForm.name = name;
scheduleForm.content = content;
scheduleForm.selectedDays = selectedDays.map((e) => weekdayMap[e]!).toList();
scheduleForm.startWeek = int.parse(startWeek);
scheduleForm.endWeek = int.parse(endWeek);
scheduleForm.startTime = startTime;
scheduleForm.endTime = endTime;
taskController.addScheduleForm(scheduleForm).then((value) => Navigator.pop(context)); //
}
},

@ -104,7 +104,7 @@ class _HomeWidgetState extends State<HomeWidget> {
MaterialPageRoute(
builder: (context) {
//todo
return AddScheduleRoute(); //
return AddScheduleRoute(scheduleType: "task",); //
},
),
);

@ -6,7 +6,7 @@ class UserSettingWidgt extends StatefulWidget {
_UserSettingWightState createState() => _UserSettingWightState();
}
//Wight
//todo:Wight
//todo:Widget
class _UserSettingWightState extends State<UserSettingWidgt> {
@override
Widget build(BuildContext context) {

@ -2,8 +2,8 @@ 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/widgets/AddCourseFormWidget.dart';
import 'package:timemanagerapp/widgets/LoginWidget.dart';
init() async {

@ -1,7 +1,7 @@
import 'package:flutter/material.dart';
import 'package:timemanagerapp/setting/Setting.dart';
import 'package:timemanagerapp/Wighets/AddCourseFormWidget.dart';
import 'package:timemanagerapp/Wighets/LoginWidget.dart';
import 'package:timemanagerapp/widgets/AddCourseFormWidget.dart';
import 'package:timemanagerapp/widgets/LoginWidget.dart';
void init(){

Loading…
Cancel
Save