lvxinquan
LRC 2 years ago
parent 64e0cb7872
commit dbd4878087

@ -0,0 +1,15 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:timemanagerapp/wighets/AddScheduleFormWighet.dart';
class AddScheduleRoute extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('添加自定义个人计划'),
),
body: AddScheduleFormWidget(),
);
}
}

@ -0,0 +1,16 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import '../tests/TestWidget.dart';
class TestRoute extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('开发者测试'),
),
body: TestWidget(),
);
}
}

@ -0,0 +1,17 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:timemanagerapp/wighets/UserSettingWighet.dart';
import '../tests/TestWidget.dart';
class UserSettingRoute extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('设置'),
),
body: UserSettingWight(),
);
}
}

@ -27,7 +27,7 @@ class MyApp extends StatelessWidget {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('课表'),
title: Text('添加课程'),
),
body: AddCourseFormWidget(),
),

@ -0,0 +1,215 @@
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';
class AddScheduleFormWidget extends StatefulWidget {
const AddScheduleFormWidget({Key? key}) : super(key: key);
@override
_AddScheduleFormWidgetState createState() => _AddScheduleFormWidgetState();
}
class _AddScheduleFormWidgetState extends State<AddScheduleFormWidget> {
CourseController courseController = CourseController();
final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
CourseForm courseForm = CourseForm();
String course = '';
String credit = '';
String note = '';
String startWeek = '1';
String endWeek = '12';
String startTime = '1';
String endTime = '2';
String teacher = '';
String location = '';
List<String> selectedDays = [];
List<MultiSelectItem<String>> daysList = [
MultiSelectItem('周一', ''),
MultiSelectItem('周二', ''),
MultiSelectItem('周三', ''),
MultiSelectItem('周四', ''),
MultiSelectItem('周五', ''),
MultiSelectItem('周六', ''),
MultiSelectItem('周日', ''),
];
final weekdayMap = {
'周一': 1,
'周二': 2,
'周三': 3,
'周四': 4,
'周五': 5,
'周六': 6,
'周日': 7,
};
@override
Widget build(BuildContext context) {
return SingleChildScrollView(
child: Padding( //
padding: const EdgeInsets.all(16.0), // 16
child: Form( //
key: _formKey, // globalKeyFormState
child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch, //
children: <Widget>[
TextFormField( //
decoration: InputDecoration(labelText: '课程*'), //
onSaved: (value) => course = value ?? '', //
validator: (value) { //
if (value == null || value.isEmpty) {
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 ?? '',
),
SizedBox(height: 16.0),
MultiSelectDialogField<String>(
items: daysList,
title: Text('上课日*'),
validator: (values) {
if (values == null || values.isEmpty) {
return '上课日为必填项';
}
return null;
},
onConfirm: (values) {
setState(() {
selectedDays = values;
});
},
),
SizedBox(height: 16.0),
TextFormField(
decoration: InputDecoration(labelText: '开始周'),
onSaved: (value) => startWeek = value ?? '',
validator: (value) {
if (value == null || value.isEmpty) {
return '开始周为必填项';
}
return null;
},
),
SizedBox(height: 16.0),
TextFormField(
decoration: InputDecoration(labelText: '结束周'),
onSaved: (value) => endWeek = value ?? '',
validator: (value) {
if (value == null || value.isEmpty) {
return '结束周为必填项';
}
return null;
},
),
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 '上课时间为必填项';
}
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 '下课时间为必填项';
}
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, //
children: <Widget>[
ElevatedButton(
onPressed: () {
//
Navigator.pop(context); //
},
child: Text('取消'),
),
ElevatedButton(
onPressed: () {
//
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)); //
}
},
child: Text('确定'),
),
],
),
],
),
),
),
);
}
}

@ -4,11 +4,14 @@ 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/ruters/AddScheduleRoute.dart';
import 'package:timemanagerapp/ruters/TestRoute.dart';
import 'package:timemanagerapp/tests/TestWidget.dart';
import 'package:timemanagerapp/wighets/TimetableWighet.dart';
import '../ruters/AddCourseRoute.dart';
import '../ruters/TimetableRoute.dart';
import '../ruters/UserSettingRoute.dart';
class HomeWidget extends StatefulWidget {
@ -95,7 +98,7 @@ class _HomePageState extends State<HomeWidget> {
MaterialPageRoute(
builder: (context) {
//todo
return AddCourseRoute(); //
return AddScheduleRoute(); //
},
),
);
@ -111,12 +114,24 @@ class _HomePageState extends State<HomeWidget> {
},
),
IconButton(
//todo 使
icon: const Icon(Icons.more),
onPressed: () {},
),
IconButton(
icon: const Icon(Icons.group_add),
onPressed: () {},
onPressed: () {
//
Navigator.push(
context,
MaterialPageRoute(
builder: (context) {
//todo
return Container();
},
),
);
},
),
Builder(
builder: (context) => IconButton( //
@ -133,83 +148,55 @@ class _HomePageState extends State<HomeWidget> {
child: Column(
children: [
UserAccountsDrawerHeader(
//todo ,,
accountName: Text('Username'),
accountEmail: Text('user@example.com'),
),
ListTile(
title: Text('开发者测试'),
title: Text('用户设置'),
onTap: () {
// TestWidget
//todo
// deng
Navigator.push(
context,
MaterialPageRoute(
builder: (context) {
return TestWidget();
return UserSettingRoute();
},
),
);
},
),
ListTile(
title: Text('删除课程'),
onTap: courseController.deleteAllCourses,
),
ListTile(
title: Text('导入课程(待开发)'),
onTap: () => courseController.autoImportCours(1, "1", 1, 1),
),
ListTile(
title: Text('插入课程'),
onTap: () => courseController.insertCourse(Course(
userId: 1,
courseId: 2,
name: "测试课",
credit: 3,
teacher: "嘉豪",
location: "638",
remark: "happy",
start: DateTime.now(),
end: DateTime.now().add(Duration(hours: 2)),
)),
),
ListTile(
title: Text('获取课程列表'),
title: Text('登录'),
onTap: () {
courseController.getCourses().then((courses) {
print(courses.length);
});
courseController.getCourses().then((courses) {
showDialog(
context: context,
//todo
// UserSettingWight
Navigator.push(
context,
MaterialPageRoute(
builder: (context) {
return AlertDialog(
title: Text('课程列表'),
content: SingleChildScrollView(
child: Column(
mainAxisSize: MainAxisSize.min,
children: courses
.map((course) => ListTile(
title: Text(course.getName),
subtitle: Text(course.toString()),
))
.toList(),
),
),
);
return UserSettingRoute();
},
);
});
),
);
},
),
ListTile(
title: Text('查看时间表'),
title: Text('退出登录'),
onTap: () {
//todo action
},
),
ListTile(
title: Text('开发者测试'),
onTap: () {
// TestWidget
Navigator.push(
context,
MaterialPageRoute(
builder: (context) {
return TimetableRoute();
return TestRoute();
},
),
);

@ -1,3 +1,25 @@
/*
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';
@ -14,20 +36,16 @@ import '../tests/database_test.dart';
import 'AddCourseFormWidget.dart';
class TestWidget extends StatefulWidget {
const TestWidget({Key? key}) : super(key: key);
@override
_TestPageState createState() => _TestPageState();
_HomePageState createState() => _HomePageState();
}
class _TestPageState extends State<TestWidget> {
class _HomePageState extends State<TestWidget> {
late UserController userController;
late CourseController courseController;
@override
void initState() {
super.initState();
@ -36,165 +54,57 @@ class _TestPageState extends State<TestWidget> {
courseController = CourseController.getInstance();
}
void handleAddCourse() {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) {
return AddCourseRoute();
},
),
);
}
void handleAddTask() {
// Implement the functionality for adding a task here
}
void handleAddTeam() {
// Implement the functionality for adding a team here
}
void handleMenu() {
// Implement the functionality for the menu here
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
backgroundColor: Colors.blue,
actions: [
IconButton(
icon: const Icon(Icons.add),
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: 1)),
child: Text('插入一个测试用户'),
),
ElevatedButton(
onPressed: () {
showDialog(
context: context,
builder: (BuildContext context) {
return AlertDialog(
title: const Text('+功能'),
content: Column(
mainAxisSize: MainAxisSize.min,
children: [
ElevatedButton(
onPressed: () {
// AddCourseFormWidget
Navigator.push(
context,
MaterialPageRoute(
builder: (context) {
return AddCourseRoute();
},
),
);
},
child: Text('添加课程'),
),
ElevatedButton(
onPressed: () {
// AddCourseFormWidget
Navigator.push(
context,
MaterialPageRoute(
builder: (context) {
return AddCourseRoute(); //
},
),
);
},
child: Text('添加任务'),
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(),
),
const SizedBox(height: 10),
],
),
);
},
);
),
);
},
);
});
},
child: Text('显示用户列表'),
),
IconButton(
icon: const Icon(Icons.more),
onPressed: () {},
),
IconButton(
icon: const Icon(Icons.group_add),
onPressed: () {},
),
Builder(
builder: (context) => IconButton(
icon: const Icon(Icons.more_horiz),
onPressed: () {
Scaffold.of(context).openEndDrawer(); // Open the right drawer
},
),
ElevatedButton(
onPressed: courseController.deleteAllCourses,
child: Text('删除所有课程'),
),
],
),
endDrawer: Drawer(
// Use endDrawer to place the drawer on the right side
child: Column(
children: [
UserAccountsDrawerHeader(
accountName: Text('Username'),
accountEmail: Text('user@example.com'),
),
ListTile(
title: Text('删除用户'),
onTap: () {
Navigator.pop(context); // Close the drawer
userController.deleteAllUsers();
},
),
ListTile(
title: Text('插入用户'),
onTap: () {
Navigator.pop(context); // Close the drawer
userController.insertUser(User(
teamId: 3231,
username: "嘉豪急啊急啊",
password: "23243",
role: 2341,
));
},
),
ListTile(
title: Text('获取用户列表'),
onTap: () {
Navigator.pop(context); // Close the drawer
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(),
),
),
);
},
);
});
},
),
ListTile(
title: Text('删除课程'),
onTap: courseController.deleteAllCourses,
),
ListTile(
title: Text('导入课程(待开发)'),
onTap: () => courseController.autoImportCours(1, "1", 1, 1),
),
ListTile(
title: Text('插入课程'),
onTap: () => courseController.insertCourse(Course(
// ElevatedButton(
// onPressed: () => courseController.autoImportCours(jsonstr),
// child: Text('导入课程(待开发)'),
// ),
ElevatedButton(
onPressed: () => courseController.insertCourse(Course(
userId: 1,
courseId: 2,
name: "测试课",
@ -203,75 +113,135 @@ class _TestPageState extends State<TestWidget> {
location: "638",
remark: "happy",
start: DateTime.now(),
end: DateTime.now().add(Duration(hours: 2)),
)),
),
ListTile(
title: Text('获取课程列表'),
onTap: () {
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.getName),
subtitle: Text(course.toString()),
))
.toList(),
),
end: DateTime.now().add(Duration(hours: 2)))),
child: Text('插入一个测试课程'),
),
ElevatedButton(
onPressed: () {
// AddCourseFormWidget
Navigator.push(
context,
MaterialPageRoute(
builder: (context) {
return AddCourseRoute();
},
),
);
},
child: Text('添加自定义课程'),
),
ElevatedButton(
onPressed: () {
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.getName),
subtitle: Text(course.toString()),
))
.toList(),
),
);
},
);
});
},
),
ListTile(
title: Text('查看时间表'),
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) {
return TimetableRoute();
},
),
),
);
},
);
});
},
child: Text('显示课程列表'),
),
ElevatedButton(
onPressed: () {
// AddCourseFormWidget
Navigator.push(
context,
MaterialPageRoute(
builder: (context) {
return TimetableRoute();
},
),
);
},
child: Text('查看时间表'),
),
AddCourseButton(
onCourseAdded: (jsonstr) {
// addCourse()
// courseController.autoImportCours(jsonstr);
}
)
],
),
);
}
}
//string
class AddCourseButton extends StatefulWidget {
final Function(String jsonstr) onCourseAdded;
AddCourseButton({required this.onCourseAdded});
@override
_AddCourseButtonState createState() => _AddCourseButtonState();
}
class _AddCourseButtonState extends State<AddCourseButton> {
TextEditingController _jsonstrController = TextEditingController();
void _showAddCourseDialog(BuildContext context) {
showDialog(
context: context,
builder: (BuildContext context) {
return AlertDialog(
title: Text('json导入课程'),
content: TextField(
controller: _jsonstrController,
decoration: InputDecoration(labelText: '请输入json字符串'),
),
actions: <Widget>[
TextButton(
child: Text('取消'),
onPressed: () {
Navigator.of(context).pop();
},
),
],
),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
ElevatedButton(
TextButton(
child: Text('确定'),
onPressed: () {
Navigator.push(
// 使 pushReplacement push
context,
MaterialPageRoute(
builder: (context) {
return TimetableRoute();
},
),
);
final jsonstr = _jsonstrController.text;
if (jsonstr.isNotEmpty) {
widget.onCourseAdded(jsonstr);
Navigator.of(context).pop();
}
},
child: Text('直接显示 TimetableRoute()'), //
)
),
],
),
),
);
},
);
}
@override
Widget build(BuildContext context) {
return ElevatedButton(
onPressed: () {
_showAddCourseDialog(context);
},
child: Text('json导入课程'),
);
}
@override
void dispose() {
_jsonstrController.dispose();
super.dispose();
}
}

@ -0,0 +1,17 @@
//Wight
import 'package:flutter/cupertino.dart';
class UserSettingWight extends StatefulWidget {
@override
_UserSettingWightState createState() => _UserSettingWightState();
}
//Wight
//todo:Wight
class _UserSettingWightState extends State<UserSettingWight> {
@override
Widget build(BuildContext context) {
return Container(
);
}
}
Loading…
Cancel
Save