Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Clean arch feature #15

Open
wants to merge 70 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
70 commits
Select commit Hold shift + click to select a range
5637b3b
first commit
danielchukwu Sep 28, 2023
541e820
first commit
danielchukwu Sep 28, 2023
8acbdea
first commit
danielchukwu Sep 28, 2023
31ff9d1
first commit
danielchukwu Sep 28, 2023
7fef079
first commit
danielchukwu Sep 28, 2023
3c6791a
first commit
danielchukwu Sep 28, 2023
006ebcb
Merge pull request #14 from danielchukwu/master
danielchukwu Sep 28, 2023
7be2a23
update: add deps
danielchukwu Sep 28, 2023
c4f558e
improve code
danielchukwu Sep 28, 2023
f12758c
improve code
danielchukwu Sep 28, 2023
4db0dd7
improve code
danielchukwu Sep 28, 2023
2dded59
update
danielchukwu Sep 28, 2023
48823c3
update
danielchukwu Sep 28, 2023
30fcf60
remove
danielchukwu Sep 29, 2023
344afd9
remove
danielchukwu Sep 29, 2023
5755a99
remove
danielchukwu Sep 29, 2023
f623c79
remove
danielchukwu Sep 29, 2023
4eb69df
remove
danielchukwu Sep 29, 2023
a0f6382
remove
danielchukwu Sep 29, 2023
eb25700
remove
danielchukwu Sep 29, 2023
2ff40f8
remove
danielchukwu Sep 29, 2023
4adb177
first commit
danielchukwu Sep 29, 2023
86ce47c
first commit
danielchukwu Sep 29, 2023
c244376
first commit
danielchukwu Sep 29, 2023
ba8cf64
first commit
danielchukwu Sep 29, 2023
27eeff3
first commit
danielchukwu Sep 29, 2023
e9c7779
install: skeletons package
danielchukwu Oct 1, 2023
1a04bce
update: replace ClassModel with ClassEntity
danielchukwu Oct 1, 2023
3570350
update: replace ClassModel with ClassEntity
danielchukwu Oct 1, 2023
9a634ff
update: use updated ClassModel and ClassEntity
danielchukwu Oct 1, 2023
d871b5f
improve code
danielchukwu Oct 1, 2023
f23ba70
comment out entire code
danielchukwu Oct 1, 2023
ac6ba7e
comment out entire code
danielchukwu Oct 1, 2023
66916e0
update: remove PersonelDashboard and GrantPermission widgets
danielchukwu Oct 1, 2023
70e11cf
update: add TextEdittingController to buildSearchTextField
danielchukwu Oct 1, 2023
51f2ab6
update: add TextEdittingController to buildSearchTextField
danielchukwu Oct 1, 2023
4dbab0d
improve code
danielchukwu Oct 1, 2023
ed7df4a
improve code
danielchukwu Oct 1, 2023
4c22c94
improve code
danielchukwu Oct 1, 2023
af10e0a
improve code
danielchukwu Oct 1, 2023
8d6342b
improve code
danielchukwu Oct 1, 2023
d187aa1
complete onGetClassesEvent Implementation
danielchukwu Oct 1, 2023
702f192
complete onGetUsers Implementation
danielchukwu Oct 1, 2023
c38e8ef
add 3rd generic type
danielchukwu Oct 1, 2023
e24ec89
complete code
danielchukwu Oct 1, 2023
deda96c
complete code
danielchukwu Oct 1, 2023
def6ca0
complete code
danielchukwu Oct 1, 2023
a149b31
complete code
danielchukwu Oct 1, 2023
cd155b5
complete code
danielchukwu Oct 1, 2023
0a585c4
complete code
danielchukwu Oct 1, 2023
011bd42
complete code
danielchukwu Oct 1, 2023
39a03bd
complete code
danielchukwu Oct 1, 2023
29a826c
first commit
danielchukwu Oct 1, 2023
6036096
first ccommit
danielchukwu Oct 4, 2023
b08b7f1
improve code
danielchukwu Oct 4, 2023
2b89dff
implement: use Theme color
danielchukwu Oct 4, 2023
75f9dd8
implement: use Theme color
danielchukwu Oct 4, 2023
813c36b
add assets/brand/
danielchukwu Oct 4, 2023
865ae04
improve code
danielchukwu Oct 4, 2023
f49d50d
improve code
danielchukwu Oct 4, 2023
19eac82
first commit
danielchukwu Oct 8, 2023
c519667
first commit
danielchukwu Oct 8, 2023
7b3eeee
remove
danielchukwu Oct 8, 2023
6fec369
remove
danielchukwu Oct 8, 2023
e4a1a7e
remove
danielchukwu Oct 8, 2023
d79da51
remove
danielchukwu Oct 8, 2023
622dc09
first commit
danielchukwu Oct 8, 2023
fa10bf6
first commit
danielchukwu Oct 8, 2023
2397fac
first commit
danielchukwu Oct 8, 2023
6680d2b
commit
danielchukwu Apr 28, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added assets/brand/logo-black.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/brand/logo-white.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/brand/symbol.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
72 changes: 27 additions & 45 deletions lib/components/Lists/class_list.dart
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
import 'package:flutter/material.dart';
import 'package:neocloud_mobile/components/cards/class_card.dart';
import 'package:neocloud_mobile/graphql/models/ClassModel.dart';
import 'package:neocloud_mobile/graphql/services/class_service.dart';
import 'package:neocloud_mobile/core/domain/entities/class_entity.dart';
import 'package:neocloud_mobile/components/widgets.dart';

class ClassList extends StatefulWidget {
class ClassList extends StatelessWidget {
const ClassList({
Key? key,
this.classList,
Expand All @@ -13,55 +12,38 @@ class ClassList extends StatefulWidget {
this.spinnerScreeMaxHeight,
}) : super(key: key);

final List<ClassModel>? classList;
final List<ClassEntity> ? classList;
final bool showClassAvatar;
final double bodySeparationSize;
final double? spinnerScreeMaxHeight;

@override
State<ClassList> createState() => _ClassListState();
}

class _ClassListState extends State<ClassList> {
var classService = ClassService();
List<ClassModel>? dataList;

@override
void initState() {
super.initState();
loadData();
}

void loadData() {
if (!mounted) return;

if (widget.classList == null) {
classService.getClasses().then((classes) {
setState(() {
dataList = classes;
});
});
} else {
dataList = widget.classList;
}
}

@override
Widget build(BuildContext context) {
return dataList == null
? spinnerScreen()
: dataList!.isEmpty
? nothingWasFoundScreen(screenMaxHeight: widget.spinnerScreeMaxHeight)
: Column(
children: List.generate(
dataList!.length,
(index) => ClassCard(
clas: dataList![index],
showClassAvatar: widget.showClassAvatar,
bodySeparationSize: widget.bodySeparationSize,
),
),
);
return Builder(
builder: (context) {
if (classList == null){
return spinnerScreen(context: context);
}
if (classList!.isEmpty) {
return nothingWasFoundScreen(context: context, screenMaxHeight: spinnerScreeMaxHeight);
}

if (classList != null) {
return Column(
children: List.generate(
classList!.length,
(index) => ClassCard(
clas: classList![index],
showClassAvatar: showClassAvatar,
bodySeparationSize: bodySeparationSize,
),
),
);
}
return Text('fix', style: Theme.of(context).textTheme.bodyMedium,);
},
);
}


Expand Down
12 changes: 6 additions & 6 deletions lib/components/Lists/class_schedule_list.dart
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
import 'package:flutter/material.dart';
import 'package:neocloud_mobile/components/cards/class_schedule_card.dart';
import 'package:neocloud_mobile/graphql/models/ClassScheduleModel.dart';
import 'package:neocloud_mobile/graphql/services/class_schedule_service.dart';
import 'package:neocloud_mobile/core/data/data_sources/remote/class_schedule_service.dart';
import 'package:neocloud_mobile/core/domain/entities/class_schedule_entity.dart';

import '../widgets.dart';

class ClassSchedulesList extends StatefulWidget {
const ClassSchedulesList({super.key, this.classScheduleList, this.spinnerScreeMaxHeight});

final List<ClassScheduleModel>? classScheduleList;
final List<ClassScheduleEntity>? classScheduleList;
final double? spinnerScreeMaxHeight;

@override
Expand All @@ -17,7 +17,7 @@ class ClassSchedulesList extends StatefulWidget {

class _ClassSchedulesListState extends State<ClassSchedulesList> {
var classSchedule = ClassScheduleService();
List<ClassScheduleModel>? dataList;
List<ClassScheduleEntity>? dataList;

@override
void initState() {
Expand All @@ -40,9 +40,9 @@ class _ClassSchedulesListState extends State<ClassSchedulesList> {
@override
Widget build(BuildContext context) {
return dataList == null
? spinnerScreen(screenMaxHeight: widget.spinnerScreeMaxHeight)
? spinnerScreen(context: context, screenMaxHeight: widget.spinnerScreeMaxHeight)
: dataList!.isEmpty
? nothingWasFoundScreen(screenMaxHeight: widget.spinnerScreeMaxHeight)
? nothingWasFoundScreen(context: context, screenMaxHeight: widget.spinnerScreeMaxHeight)
: Column(
children: List.generate(
dataList!.length,
Expand Down
12 changes: 6 additions & 6 deletions lib/components/Lists/class_works_list.dart
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import 'package:flutter/material.dart';
import 'package:neocloud_mobile/components/cards/class_works_card.dart';
import 'package:neocloud_mobile/graphql/models/ClassworkModel.dart';
import 'package:neocloud_mobile/graphql/services/classwork_service.dart';
import 'package:neocloud_mobile/core/data/data_sources/remote/classwork_service.dart';
import 'package:neocloud_mobile/core/domain/entities/classwork_entity.dart';

import '../widgets.dart';

Expand All @@ -13,7 +13,7 @@ class ClassworksList extends StatefulWidget {
this.spinnerScreeMaxHeight
}) : super(key: key);

final List<ClassworkModel>? classworkList;
final List<ClassworkEntity>? classworkList;
final bool showFeedback;
final double? spinnerScreeMaxHeight;

Expand All @@ -23,7 +23,7 @@ class ClassworksList extends StatefulWidget {

class _ClassworksListState extends State<ClassworksList> {
var classworkService = ClassworkService();
List<ClassworkModel>? dataList;
List<ClassworkEntity>? dataList;

@override
void initState() {
Expand All @@ -48,9 +48,9 @@ class _ClassworksListState extends State<ClassworksList> {
@override
Widget build(BuildContext context) {
return dataList == null
? spinnerScreen(screenMaxHeight: widget.spinnerScreeMaxHeight)
? spinnerScreen(context: context, screenMaxHeight: widget.spinnerScreeMaxHeight)
: dataList!.isEmpty
? nothingWasFoundScreen(screenMaxHeight: widget.spinnerScreeMaxHeight)
? nothingWasFoundScreen(context: context, screenMaxHeight: widget.spinnerScreeMaxHeight)
: Column(
children: List.generate(
dataList!.length,
Expand Down
12 changes: 6 additions & 6 deletions lib/components/Lists/faculty_list.dart
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:neocloud_mobile/components/cards/faculty_card.dart';
import 'package:neocloud_mobile/graphql/models/FacultyModel.dart';
import 'package:neocloud_mobile/graphql/services/faculty_service.dart';
import 'package:neocloud_mobile/core/data/data_sources/remote/faculty_service.dart';
import 'package:neocloud_mobile/core/domain/entities/faculty_entity.dart';
import 'package:neocloud_mobile/models/Faculty.dart';

import '../widgets.dart';

class FacultyList extends StatefulWidget {
const FacultyList({Key? key, this.facultyList, this.spinnerScreeMaxHeight}) : super(key: key);

final List<FacultyModel>? facultyList;
final List<FacultyEntity>? facultyList;
final double? spinnerScreeMaxHeight;

@override
Expand All @@ -20,7 +20,7 @@ class FacultyList extends StatefulWidget {
// (){} "" <> ? _ ! *
class _FacultyListState extends State<FacultyList> {
var facultyService = FacultyService();
List<FacultyModel>? dataList;
List<FacultyEntity>? dataList;

@override
void initState() {
Expand Down Expand Up @@ -49,9 +49,9 @@ class _FacultyListState extends State<FacultyList> {
// (index) => FacultyCard(faculty: facultiesList[index])),
// );
return dataList == null
? spinnerScreen(screenMaxHeight: widget.spinnerScreeMaxHeight)
? spinnerScreen(context: context, screenMaxHeight: widget.spinnerScreeMaxHeight)
: dataList!.isEmpty
? nothingWasFoundScreen(screenMaxHeight: widget.spinnerScreeMaxHeight)
? nothingWasFoundScreen(context: context, screenMaxHeight: widget.spinnerScreeMaxHeight)
: Column(
children: List.generate(
facultiesList.length,
Expand Down
71 changes: 15 additions & 56 deletions lib/components/Lists/user_list.dart
Original file line number Diff line number Diff line change
@@ -1,66 +1,25 @@
import 'package:flutter/material.dart';
import 'package:neocloud_mobile/components/tile/tiles.dart';
import 'package:neocloud_mobile/graphql/models/UserModel.dart';
import 'package:neocloud_mobile/graphql/services/user_service.dart';
import 'package:neocloud_mobile/screens/Profile/profile_sceen.dart';

import 'package:neocloud_mobile/components/tile/user_tile.dart';
import 'package:neocloud_mobile/core/domain/entities/user_entity.dart';
import '../widgets.dart';

class UserList extends StatefulWidget {
const UserList({
super.key,
this.usersList,
this.spinnerScreeMaxHeight
});
class UserList extends StatelessWidget {
const UserList({super.key, this.users, this.spinnerScreeMaxHeight});

final List<UserModel>? usersList;
final List<UserEntity>? users;
final double? spinnerScreeMaxHeight;

@override
State<UserList> createState() => _UserListState();
}

class _UserListState extends State<UserList> {
var userService = UserService();
List<UserModel>? dataList;

@override
void initState() {
super.initState();
loadData();
}

void loadData() {
if (!mounted) return;

if (widget.usersList == null) {
userService.getUsers().then((users) {
setState(() { dataList = users; });
});
}
}

@override
Widget build(BuildContext context) {
if (widget.usersList != null) { dataList = widget.usersList; }

return dataList == null
? spinnerScreen(screenMaxHeight: widget.spinnerScreeMaxHeight)
: dataList!.isEmpty
? nothingWasFoundScreen(screenMaxHeight: widget.spinnerScreeMaxHeight)
: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: List.generate(
dataList!.length,
(index) => GestureDetector(
onTap: () => Navigator.push(context, MaterialPageRoute(builder: (context) => ProfileScreen(user: dataList![index]),)),
child: UserTile(
user: dataList![index]
),
),
),
);
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: List.generate(
users!.length,
(index) => GestureDetector(
// onTap: () => Navigator.push(context, MaterialPageRoute(builder: (context) => ProfileScreen(user: dataList![index]),)),
child: UserTile(user: users![index]),
),
),
);
}

toList() {}
}
8 changes: 2 additions & 6 deletions lib/components/appbar/actions.dart
Original file line number Diff line number Diff line change
Expand Up @@ -8,17 +8,13 @@ class actionUserButton extends StatelessWidget {
super.key,
this.icon,
this.svg,
this.isDark = false,
this.routeWidget,
});

// either <svg> or <icon> is required for in other for something
// to be displayed
final IconData? icon;
final String? svg;
// action button is dark when this <isDark> is true and white when <isDark>
// is false
final bool isDark;
// the route to be navigated to when this action button is clicked on
final String routeName;
//
Expand All @@ -41,8 +37,8 @@ class actionUserButton extends StatelessWidget {
color: Colors.transparent,
padding: EdgeInsets.symmetric(horizontal: defaultSize * 2),
child: svg != null
? IconOrSvg(svg: svg!, color: isDark ? kBlack80 : kWhite, size: defaultSize * 2.5,)
: IconOrSvg(icon: icon!, color: isDark ? kBlack80 : kWhite, size: defaultSize * 2.5),
? IconOrSvg(svg: svg!, size: defaultSize * 2.5,)
: IconOrSvg(icon: icon!, size: defaultSize * 2.5),
)
);
}
Expand Down
Loading