From bce690e0b36b2d4ef197e8938112ca47dd4c8fc9 Mon Sep 17 00:00:00 2001 From: LRC <991971966@qq.com> Date: Tue, 17 Oct 2023 12:58:23 +0800 Subject: [PATCH] =?UTF-8?q?addTean,deleteTeam=E6=8E=A7=E5=88=B6=E5=AE=8C?= =?UTF-8?q?=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lib/controller/NetWorkController.dart | 35 ++-- .../lib/controller/TeamController.dart | 37 +++- .../lib/database/MyDatebase.dart | 84 +++++++-- src/timemanagerapp/lib/entity/Team.dart | 23 ++- src/timemanagerapp/lib/main.dart | 4 + .../lib/provider/TeamProvider.dart | 20 +++ .../lib/provider/TeamUserProvider.dart | 20 +++ .../lib/ruters/ManageUserTeamRoute.dart | 2 +- .../lib/widgets/AddTeamWidget.dart | 16 +- .../lib/widgets/ManageUserTeamWidget.dart | 170 +++++++++++++++--- src/timemanagerapp/lib/widgets/TeamWidgt.dart | 162 +++++++++++------ .../lib/widgets/TestWidget.dart | 35 +++- 12 files changed, 475 insertions(+), 133 deletions(-) create mode 100644 src/timemanagerapp/lib/provider/TeamProvider.dart create mode 100644 src/timemanagerapp/lib/provider/TeamUserProvider.dart diff --git a/src/timemanagerapp/lib/controller/NetWorkController.dart b/src/timemanagerapp/lib/controller/NetWorkController.dart index d7ba1a9..4067880 100644 --- a/src/timemanagerapp/lib/controller/NetWorkController.dart +++ b/src/timemanagerapp/lib/controller/NetWorkController.dart @@ -69,22 +69,31 @@ class NetWorkController { return false; } } - //----------------------团队信息相关---------------------------- - Future> getTeamList(int userid) async { + Future> getTeamList(int leaderId) async { final response = await http.get( - Uri.parse(baseUrl + 'get_team_list'), + Uri.parse(baseUrl + 'get_team').replace(queryParameters: {'leaderId': leaderId.toString()}), headers: { 'Content-Type': 'application/json; charset=UTF-8', }, + ); final jsonResponse = json.decode(response.body); if (jsonResponse['code'] == 200) { - List jsonResponse = json.decode(response.body); - List teamList = jsonResponse.map((team) => Team.fromJson(team)).toList(); - return teamList; + final Map jsonResponse = json.decode(response.body); + if (jsonResponse != null && jsonResponse['data'] != null) { + List teamList = (jsonResponse['data'] as List) + .map((team) => Team.fromJson(team as Map)) + .toList(); + + print(teamList); + return teamList; + } else { + print('JSON数据解析错误'); + return []; + } } else { return []; } @@ -145,7 +154,7 @@ class NetWorkController { } //----------------------团队成员相关---------------------------- - Future?> getTeamUserList(int teamid) async { + Future> getTeamUserList(int teamid) async { final response = await http.get( Uri.parse(baseUrl + 'get_team_user_list'), headers: { @@ -159,11 +168,11 @@ class NetWorkController { List userList = jsonResponse.map((user) => User.fromJson(user)).toList(); return userList; } else { - return null; + return []; } } - Future insertTeamUser(int teamid, int userid) async { + Future insertTeamUser(int teamid, String membername) async { final response = await http.post( Uri.parse(baseUrl+'insert_team_user'), headers: { @@ -171,7 +180,7 @@ class NetWorkController { }, body: JsonEncoder().convert({ 'teamId': teamid, - 'userId': userid, + 'membername': membername, }), ); @@ -183,7 +192,7 @@ class NetWorkController { } } - Future deleteTeamUser(int teamid, int userid) async { + Future deleteTeamUser(int teamid, String membername) async { final response = await http.post( Uri.parse(baseUrl+'delete_team_user'), headers: { @@ -191,7 +200,7 @@ class NetWorkController { }, body: JsonEncoder().convert({ 'teamId': teamid, - 'userId': userid, + 'membername': membername, }), ); @@ -280,7 +289,7 @@ class NetWorkController { //----------------------课程相关---------------------------- Future?> getCourseList(int userId) async { final response = await http.get( - Uri.parse(baseUrl + 'get_team_user_list'), + Uri.parse(baseUrl + 'get_all_course'), headers: { 'Content-Type': 'application/json; charset=UTF-8', }, diff --git a/src/timemanagerapp/lib/controller/TeamController.dart b/src/timemanagerapp/lib/controller/TeamController.dart index 2999866..1e21136 100644 --- a/src/timemanagerapp/lib/controller/TeamController.dart +++ b/src/timemanagerapp/lib/controller/TeamController.dart @@ -1,4 +1,5 @@ import 'package:timemanagerapp/controller/NetWorkController.dart'; +import 'package:timemanagerapp/entity/User.dart'; import '../entity/Team.dart'; import '../entity/Work.dart'; @@ -6,12 +7,14 @@ import 'package:timemanagerapp/database/dao/TeamDao.dart'; import 'package:timemanagerapp/database/dao/WorkDao.dart'; import '../setting/Setting.dart'; +import '../util/dataUtil.dart'; class TeamController { late int leaderid; List teamList = []; //实时维护的teamList缓存 Map> Wordmaplist = {}; NetWorkController netWorkController = NetWorkController(); + IdGenerator idGenerator = IdGenerator(); TeamController() { //leaderid为当前用户的id @@ -24,14 +27,17 @@ class TeamController { } } + + + //Team相关 + // Future deleteAllTeams() async { + // await netWorkController.deleteAllTeams(); + // } + Future> getTeamList() async { return await netWorkController.getTeamList(Setting.user!.getId!); } - Future createTeam(Team team) async { - return await netWorkController.insertTeam(team); - } - Future insertTeamList(List teamList) async { for (Team team in teamList) { @@ -39,19 +45,34 @@ class TeamController { } } - // Future deleteAllTeams() async { - // await netWorkController.deleteAllTeams(); - // } - Future deleteTeam(int teamid) async { return await netWorkController.deleteTeam(teamid); } + Future insertTeam(Team team) async { + team.id = await idGenerator.generateId(); + return await netWorkController.insertTeam(team); + } + Future updateTeam(Team team) async { return await netWorkController.updateTeam(team); } + //TeamUser相关 + Future> getTeamUserList(int teamid) async { + return await netWorkController.getTeamUserList(teamid); + } + + Future insertTeamUser(int teamid, String membername) async { + return await netWorkController.insertTeamUser(teamid, membername); + } + + Future deleteTeamUser(int teamid, String membername) async { + return await netWorkController.deleteTeamUser(teamid, membername); + } + + //Work相关 Future insertWork(Work work) async { return await netWorkController.insertTeamWork(work); } diff --git a/src/timemanagerapp/lib/database/MyDatebase.dart b/src/timemanagerapp/lib/database/MyDatebase.dart index 7883264..2956c07 100644 --- a/src/timemanagerapp/lib/database/MyDatebase.dart +++ b/src/timemanagerapp/lib/database/MyDatebase.dart @@ -42,6 +42,69 @@ class MyDatabase { } + static Future _createAllTableBySql(Database db) async{ + await db.execute(''' + CREATE TABLE IF NOT EXISTS users( + id BIGINT PRIMARY KEY, + username TEXT NOT NULL, + password TEXT NOT NULL, + role BIGINT NOT NULL + ); + CREATE TABLE IF NOT EXISTS works ( + id BIGINT PRIMARY KEY, + userId BIGINT NOT NULL, + workId BIGINT NOT NULL, + teamId BIGINT NOT NULL, + name TEXT NOT NULL, + content TEXT, + status TEXT, + endTime TEXT NOT NULL, + startTime TEXT NOT NULL + ); + CREATE TABLE IF NOT EXISTS clocks ( + id BIGINT PRIMARY KEY, + clockId BIGINT NOT NULL, + userId BIGINT NOT NULL, + text TEXT, + img TEXT, + music TEXT + ); + CREATE TABLE IF NOT EXISTS tasks ( + id BIGINT PRIMARY KEY, + taskId BIGINT NOT NULL, + userId BIGINT NOT NULL, + content TEXT, + name TEXT NOT NULL, + startTime TEXT NOT NULL, + endTime TEXT NOT NULL + ); + CREATE TABLE IF NOT EXISTS course( + id BIGINT PRIMARY KEY, + userId BIGINT, + courseId BIGINT NOT NULL, + name TEXT NOT NULL, + credit REAL, + teacher TEXT, + location TEXT, + remark TEXT, + start TEXT NOT NULL, + end TEXT NOT NULL + ); + CREATE TABLE IF NOT EXISTS teams ( + id BIGINT PRIMARY KEY, + leaderId BIGINT NOT NULL, + teamName TEXT NOT NULL, + maxNumber BIGINT, + introduce TEXT + ); + CREATE TABLE IF NOT EXISTS userteams ( + id BIGINT PRIMARY KEY, + userId BIGINT NOT NULL, + teamId BIGINT NOT NULL + ); + '''); + } + static Future _createUserTable(Database db, int version) async { // 创建User表 await db.execute(''' @@ -147,15 +210,16 @@ class MyDatabase { // 执行删除表格 static Future _dropAllTables(Database database) async { // 执行删除表格的 SQL 语句 - await database.transaction((txn) async { - // 例如,如果有表格名为 'table1'、'table2'、'table3',可以执行以下操作: - await txn.execute('DROP TABLE IF EXISTS users'); - await txn.execute('DROP TABLE IF EXISTS clocks'); - await txn.execute('DROP TABLE IF EXISTS tasks'); - await txn.execute('DROP TABLE IF EXISTS works'); - await txn.execute('DROP TABLE IF EXISTS course'); - await txn.execute('DROP TABLE IF EXISTS teams'); - await txn.execute('DROP TABLE IF EXISTS userteams'); - }); + await _createAllTableBySql(database); + // await database.transaction((txn) async { + // // 例如,如果有表格名为 'table1'、'table2'、'table3',可以执行以下操作: + // await txn.execute('DROP TABLE IF EXISTS users'); + // await txn.execute('DROP TABLE IF EXISTS clocks'); + // await txn.execute('DROP TABLE IF EXISTS tasks'); + // await txn.execute('DROP TABLE IF EXISTS works'); + // await txn.execute('DROP TABLE IF EXISTS course'); + // await txn.execute('DROP TABLE IF EXISTS teams'); + // await txn.execute('DROP TABLE IF EXISTS userteams'); + // }); } } diff --git a/src/timemanagerapp/lib/entity/Team.dart b/src/timemanagerapp/lib/entity/Team.dart index 2c5f1c3..b88c651 100644 --- a/src/timemanagerapp/lib/entity/Team.dart +++ b/src/timemanagerapp/lib/entity/Team.dart @@ -3,12 +3,14 @@ class Team { int leaderId; String teamName; int maxNumber; + String? introduce; Team({ this.id, required this.leaderId, required this.teamName, required this.maxNumber, + this.introduce }); Map toMap() { @@ -17,18 +19,17 @@ class Team { 'leaderId': leaderId, 'teamName': "$teamName", 'maxNumber': maxNumber, + 'introduce': "$introduce" }; } factory Team.fromJson(Map json) { - final data = json['data']; - final team = data['team'][0]; - return Team( - id: team['id'], - leaderId: team['leaderId'], - teamName: team['teamName'], - maxNumber: team['maxNumber'], + id: json['id'], + leaderId: json['leaderId'], + teamName: json['teamName'], + maxNumber: json['maxNumber'], + introduce: json['introduce'], ); } @@ -41,6 +42,8 @@ class Team { int get getMaxNumber => maxNumber; + String? get getIntroduce => introduce; + // Setter methods set setId(int newId) { id = newId; @@ -58,9 +61,13 @@ class Team { maxNumber = newMaxNumber; } + set setIntroduce(String newIntroduce) { + introduce = newIntroduce; + } + // toString method @override String toString() { - return 'Team(id: $id, leaderId:$leaderId, teamName:$teamName, maxNumber: $maxNumber)'; + return 'Team{id: $id, leaderId: $leaderId, teamName: $teamName, maxNumber: $maxNumber, introduce: $introduce}'; } } diff --git a/src/timemanagerapp/lib/main.dart b/src/timemanagerapp/lib/main.dart index d410fc6..4f5d97a 100644 --- a/src/timemanagerapp/lib/main.dart +++ b/src/timemanagerapp/lib/main.dart @@ -1,5 +1,7 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; +import 'package:timemanagerapp/provider/TeamProvider.dart'; +import 'package:timemanagerapp/provider/TeamUserProvider.dart'; import 'package:timemanagerapp/setting/Setting.dart'; import 'package:timemanagerapp/widgets/HomeWidget.dart'; import 'package:timemanagerapp/provider/TimeProvider.dart'; @@ -23,6 +25,8 @@ class MyApp extends StatelessWidget { return MultiProvider( //全局状态管理Timetable providers: [ ChangeNotifierProvider(create: (ctx) => TimeProvider()), + ChangeNotifierProvider(create: (ctx) => TeamProvider()), + ChangeNotifierProvider(create: (ctx) => TeamUserProvider()), ], child: MaterialApp( home: Scaffold( diff --git a/src/timemanagerapp/lib/provider/TeamProvider.dart b/src/timemanagerapp/lib/provider/TeamProvider.dart new file mode 100644 index 0000000..a450eac --- /dev/null +++ b/src/timemanagerapp/lib/provider/TeamProvider.dart @@ -0,0 +1,20 @@ +import 'package:flutter/cupertino.dart'; + +class TeamProvider extends ChangeNotifier { + int _updatTeamCount = 0; + + int get updatTeamCount => _updatTeamCount; + + + set updatTeamCount(int value) { + print("provider手动更新Team表"); + _updatTeamCount = value; + notifyListeners(); + } + + void updatTeame() { + print("provider手动更新Team表"); + _updatTeamCount = ~_updatTeamCount; + notifyListeners(); + } +} \ No newline at end of file diff --git a/src/timemanagerapp/lib/provider/TeamUserProvider.dart b/src/timemanagerapp/lib/provider/TeamUserProvider.dart new file mode 100644 index 0000000..cf78508 --- /dev/null +++ b/src/timemanagerapp/lib/provider/TeamUserProvider.dart @@ -0,0 +1,20 @@ +import 'package:flutter/cupertino.dart'; + +class TeamUserProvider extends ChangeNotifier { + int _updatTeamUserCount = 0; + + int get updatTeameCount => _updatTeamUserCount; + + + set updatTeameUserCount(int value) { + print("provider手动更新TeamUser表"); + _updatTeamUserCount = value; + notifyListeners(); + } + + void updatTeameUser() { + print("provider手动更新TeamUser表"); + _updatTeamUserCount = ~_updatTeamUserCount; + notifyListeners(); + } +} \ No newline at end of file diff --git a/src/timemanagerapp/lib/ruters/ManageUserTeamRoute.dart b/src/timemanagerapp/lib/ruters/ManageUserTeamRoute.dart index dacc5b7..86c64a5 100644 --- a/src/timemanagerapp/lib/ruters/ManageUserTeamRoute.dart +++ b/src/timemanagerapp/lib/ruters/ManageUserTeamRoute.dart @@ -11,7 +11,7 @@ class ManageUserTeamRoute extends StatelessWidget { appBar: AppBar( title: Text('团队成员管理'), ), - body: ManageUserTeamWidget(), + // body: ManageUserTeamWidget(), ); } } diff --git a/src/timemanagerapp/lib/widgets/AddTeamWidget.dart b/src/timemanagerapp/lib/widgets/AddTeamWidget.dart index c03e438..80cf43a 100644 --- a/src/timemanagerapp/lib/widgets/AddTeamWidget.dart +++ b/src/timemanagerapp/lib/widgets/AddTeamWidget.dart @@ -1,4 +1,8 @@ import 'package:flutter/material.dart'; +import 'package:timemanagerapp/controller/TeamController.dart'; +import 'package:timemanagerapp/entity/Team.dart'; + +import '../setting/Setting.dart'; class AddTeamWidget extends StatefulWidget { @override @@ -6,6 +10,8 @@ class AddTeamWidget extends StatefulWidget { } class _AddTeamWidgetState extends State { + TeamController teamController = TeamController(); + TextEditingController teamNameController = TextEditingController(); TextEditingController teamDescriptionController = TextEditingController(); @@ -37,12 +43,14 @@ class _AddTeamWidgetState extends State { onPressed: () { String teamName = teamNameController.text; String teamDescription = teamDescriptionController.text; + + teamController.insertTeam(Team(leaderId: Setting.user!.getId!, teamName: teamName,introduce: teamDescription, maxNumber: 1000)); // 执行您的处理逻辑 //todo - setState(() { - teamNameController.text = teamName; - teamDescriptionController.text = teamDescription; - }); + // setState(() { + // teamNameController.text = teamName; + // teamDescriptionController.text = teamDescription; + // }); Navigator.pop(context); }, child: Text('确定'), diff --git a/src/timemanagerapp/lib/widgets/ManageUserTeamWidget.dart b/src/timemanagerapp/lib/widgets/ManageUserTeamWidget.dart index ddc8679..ffed83e 100644 --- a/src/timemanagerapp/lib/widgets/ManageUserTeamWidget.dart +++ b/src/timemanagerapp/lib/widgets/ManageUserTeamWidget.dart @@ -1,26 +1,61 @@ import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; +import 'package:timemanagerapp/controller/TeamController.dart'; +import 'package:timemanagerapp/provider/TeamProvider.dart'; + +import '../entity/Team.dart'; class ManageUserTeamWidget extends StatefulWidget { - const ManageUserTeamWidget({Key? key}) : super(key: key); + const ManageUserTeamWidget({Key? key,required this.team}) : super(key: key); + + final Team team; @override - _AddTeamWidgetState createState() => _AddTeamWidgetState(); + _ManageUserTeamWidgetState createState() => _ManageUserTeamWidgetState(team: team); } -class _AddTeamWidgetState extends State { - TextEditingController memberIdController = TextEditingController(); +class _ManageUserTeamWidgetState extends State { + _ManageUserTeamWidgetState({required this.team}); + + final Team team; + + TeamController teamController = TeamController(); + + int firstInit = 0; + + List memberList = [ + '成员1', + '成员2', + '成员3', + ]; + + + Future futureDo() async { + // 模拟从数据库获取成员列表 + // memberList = await teamController.getTeamList(); + } + + dataInitAfterFutherDo() { + // 初始化数据后的操作 + } + + updateAfterFutherDo() { + // 更新数据后的操作 + } void handleInviteButton() { - String memberId = memberIdController.text; + String memberName = memberIdController.text; // 这里可以实现将成员加入团队的逻辑 + teamController.insertTeamUser(team.id!, memberName); + // 弹出成功发送邀请的提示框 showDialog( context: context, builder: (BuildContext context) { return AlertDialog( title: Text('成功发送邀请'), - content: Text('已成功发送邀请给成员ID: $memberId'), + content: Text('已成功发送邀请给成员: $memberName'), actions: [ TextButton( child: Text('确定'), @@ -34,28 +69,111 @@ class _AddTeamWidgetState extends State { ); } - @override - Widget build(BuildContext context) { - return Scaffold( - appBar: AppBar( - title: Text('添加团队成员'), - ), - body: Padding( - padding: EdgeInsets.all(16.0), - child: Column( - children: [ - TextField( - controller: memberIdController, - decoration: InputDecoration(labelText: '成员ID'), - ), - SizedBox(height: 20), - ElevatedButton( - onPressed: handleInviteButton, - child: Text('邀请'), + void removeMember(String membername) { + // 这里可以实现移除成员的逻辑 + teamController.deleteTeamUser(team.id!, membername); + + // 弹出成功移除成员的提示框 + showDialog( + context: context, + builder: (BuildContext context) { + return AlertDialog( + title: Text('成功移除成员'), + content: Text('已成功移除成员: $membername'), + actions: [ + TextButton( + child: Text('确定'), + onPressed: () { + Navigator.of(context).pop(); // 关闭对话框 + }, ), ], - ), - ), + ); + }, ); } + + final memberIdController = TextEditingController(); + + @override + void initState() { + super.initState(); + } + + @override + Widget build(BuildContext context) { + return Consumer(builder: (ctx, teamPro, child) { + print('Rebuild teamPro'); + return FutureBuilder( + future: futureDo(), + builder: (BuildContext context, AsyncSnapshot snapshot) { + // 请求已结束 + if (snapshot.connectionState == ConnectionState.done) { + if (snapshot.hasError) { + return Center( + child: Text('Error: ${snapshot.error}'), + ); + } else { + if (firstInit == 0) { + //第一次初始化 + dataInitAfterFutherDo(); + firstInit = 1; + } else { + //更新 + updateAfterFutherDo(); + } + return Scaffold( + appBar: AppBar( + title: Text('添加团队成员'), + ), + body: RefreshIndicator( + onRefresh: () { + print('下拉refresh'); + return futureDo().then((value) => setState(() {})); + }, + child: Padding( + padding: EdgeInsets.all(16.0), + child: Column( + children: [ + TextField( + controller: memberIdController, + decoration: InputDecoration(labelText: '成员ID'), + ), + SizedBox(height: 20), + ElevatedButton( // 邀请按钮 + onPressed: handleInviteButton, + child: Text('邀请'), + ), + SizedBox(height: 20), + Expanded( // 这里使用Expanded组件,使ListView占据剩余空间 + child: ListView.builder( + itemCount: memberList.length, + itemBuilder: (BuildContext context, int index) { + String member = memberList[index]; + return ListTile( //删除成员的按钮 + title: Text(member), + trailing: IconButton( + icon: Icon(Icons.remove), + onPressed: () { + removeMember(member); + }, + ), + ); + }, + ), + ), + ], + ), + ), + ), + ); + } + } else { + return Center( + child: CircularProgressIndicator(), + ); + } + }); + }); + } } diff --git a/src/timemanagerapp/lib/widgets/TeamWidgt.dart b/src/timemanagerapp/lib/widgets/TeamWidgt.dart index c7c1ed3..9242072 100644 --- a/src/timemanagerapp/lib/widgets/TeamWidgt.dart +++ b/src/timemanagerapp/lib/widgets/TeamWidgt.dart @@ -1,12 +1,8 @@ import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; import 'package:timemanagerapp/controller/TeamController.dart'; +import 'package:timemanagerapp/provider/TeamUserProvider.dart'; import 'package:timemanagerapp/ruters/AddScheduleRoute.dart'; -import 'package:timemanagerapp/ruters/AddTeamRoute.dart'; -import 'package:timemanagerapp/widgets/AddScheduleFormWidget.dart'; -import 'package:timemanagerapp/widgets/AddTeamWidget.dart'; - -import 'package:flutter/material.dart'; -import 'package:timemanagerapp/widgets/AddTeamWidget.dart'; import 'package:timemanagerapp/widgets/ManageUserTeamWidget.dart'; import '../entity/Team.dart'; @@ -19,11 +15,15 @@ class TeamWidget extends StatefulWidget { } class _TeamWidgetState extends State { - List teamList = [ - // Team(id:1, teamName: 'Team 1', leaderId: 1, maxNumber: 10), - // Team(id:2, teamName: 'Team 2', leaderId: 1, maxNumber: 10), - // Team(id:3, teamName: 'Team 3', leaderId: 1, maxNumber: 10) - ]; + + int firstInit = 0; + + List teamList = []; + // [ + // Team(id:1, teamName: 'Team 1', leaderId: 1, maxNumber: 10), + // Team(id:2, teamName: 'Team 2', leaderId: 1, maxNumber: 10), + // Team(id:3, teamName: 'Team 3', leaderId: 1, maxNumber: 10) + // ]; TeamController teamController = TeamController(); @@ -35,6 +35,14 @@ class _TeamWidgetState extends State { teamList = await teamController.getTeamList(); } + dataInitAfterFutherDo() { + + } + + updateAfterFutherDo() { + + } + @override initState(){ super.initState(); @@ -43,55 +51,91 @@ class _TeamWidgetState extends State { @override Widget build(BuildContext context) { - return Center( - child: ListView.builder( - itemCount: teamList.length, - itemBuilder: (BuildContext context, int index) { - Team team = teamList[index]; - return Column( - children: [ - ListTile( - leading: Icon(Icons.group), // 团队的icon - title: Text(team.teamName), // 团队名称 - trailing: Row( - mainAxisSize: MainAxisSize.min, - children: [ - IconButton( - icon: Icon(Icons.person_add), // 添加成员的功能按键 - onPressed: () { - Navigator.push( - context, - MaterialPageRoute( - builder: (context) { - return ManageUserTeamWidget(); - }, - ), - ); - }, - ), - IconButton( - icon: Icon(Icons.assignment), // 团队任务的功能按键 - onPressed: () { - Navigator.push( - context, - MaterialPageRoute( - builder: (context) { - return AddScheduleRoute( - scheduleType: "work", - teamId: 1, - ); - }, + return Consumer(builder: (ctx, teamUserPro, child) { + print('Rebuild teamUserPro'); + return FutureBuilder( + future: futureDo(), + builder: (BuildContext context, AsyncSnapshot snapshot) { + // 请求已结束 + if (snapshot.connectionState == ConnectionState.done) { + if (firstInit == 0) { + //第一次初始化 + dataInitAfterFutherDo(); + firstInit = 1; + } else { + //更新 + updateAfterFutherDo(); + } + return RefreshIndicator( + onRefresh: () { + print('下拉refresh'); + return futureDo().then((value) => setState(() {})); + }, + child: Center( + child: ListView.builder( + itemCount: teamList.length, + itemBuilder: (BuildContext context, int index) { + Team team = teamList[index]; + return Column( + children: [ + ListTile( + leading: Icon(Icons.group), // 团队的icon + title: Text(team.teamName), // 团队名称 + trailing: Row( + mainAxisSize: MainAxisSize.min, + children: [ + IconButton( + icon: Icon(Icons.person_add), // 添加成员的功能按键 + onPressed: () { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) { + return ManageUserTeamWidget(team: team); + }, + ), + ); + }, + ), + IconButton( + icon: Icon(Icons.assignment), // 添加团队任务的功能按键 + onPressed: () { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) { + return AddScheduleRoute( + scheduleType: "work", + teamId: 1, + ); + }, + ), + ); + }, + ), + IconButton( + icon: Icon(Icons.remove), + onPressed: () { + setState(() { + teamController.deleteTeam(team.id!); + }); + }, + ), + ], + ), ), - ); - }, - ), - ], + ], + ); + }, + ), ), - ), - ], - ); - }, - ), - ); + ); + } else { + return Center( + child: CircularProgressIndicator(), + ); + } + }); + }); } } diff --git a/src/timemanagerapp/lib/widgets/TestWidget.dart b/src/timemanagerapp/lib/widgets/TestWidget.dart index ebf2a5c..d849aa3 100644 --- a/src/timemanagerapp/lib/widgets/TestWidget.dart +++ b/src/timemanagerapp/lib/widgets/TestWidget.dart @@ -25,6 +25,7 @@ import 'package:flutter/material.dart'; import 'package:sqflite/sqflite.dart'; import 'package:timemanagerapp/controller/CourseController.dart'; import 'package:timemanagerapp/controller/NetWorkController.dart'; +import 'package:timemanagerapp/controller/TeamController.dart'; import 'package:timemanagerapp/controller/UserController.dart'; import 'package:timemanagerapp/database/dao/WorkDao.dart'; import 'package:timemanagerapp/entity/Course.dart'; @@ -203,7 +204,7 @@ class _TestWidgetState extends State { ElevatedButton( onPressed: () { UserController() - .login(User(username: 'test', password: '123', role: 1)) + .login(User(username: 'root', password: 'root', role: 1)) .then((resUser) { showDialog( context: context, @@ -222,7 +223,7 @@ class _TestWidgetState extends State { ElevatedButton( onPressed: () { NetWorkController() - .register(User(id: 3, username:'testReg' , password: '123', role: 0)) + .register(User(id: Setting.user!.getId!, username:'testReg' , password: '123', role: 0)) .then((res) { showDialog( context: context, @@ -259,8 +260,34 @@ class _TestWidgetState extends State { ), ElevatedButton( onPressed: () { - NetWorkController() - .insertTeam(Team(id:2, leaderId: 1, teamName: "test", maxNumber: 5)) + TeamController().getTeamList().then((teamList) { + showDialog( + context: context, + builder: (context) { + return AlertDialog( + title: Text('团队列表'), + content: SingleChildScrollView( + child: Column( + mainAxisSize: MainAxisSize.min, + children: teamList + .map((team) => ListTile( + title: Text(team.getTeamName), + subtitle: Text(team.toString()), + )) + .toList(), + ), + ), + ); + }, + ); + }); + }, + child: Text('显示团队列表'), + ), + ElevatedButton( + onPressed: () { + TeamController() + .insertTeam(Team(leaderId: Setting.user!.getId!, teamName: "test3", maxNumber: 5)) .then((resTeam) { showDialog( context: context,