├── .gitignore
├── .metadata
├── README.md
├── SQL File
└── teamcode_db_result.sql
├── android
├── .gitignore
├── app
│ ├── build.gradle
│ └── src
│ │ ├── debug
│ │ └── AndroidManifest.xml
│ │ ├── main
│ │ ├── AndroidManifest.xml
│ │ ├── kotlin
│ │ │ └── com
│ │ │ │ └── example
│ │ │ │ └── result
│ │ │ │ └── MainActivity.kt
│ │ └── res
│ │ │ ├── drawable
│ │ │ └── launch_background.xml
│ │ │ ├── mipmap-hdpi
│ │ │ └── ic_launcher.png
│ │ │ ├── mipmap-mdpi
│ │ │ └── ic_launcher.png
│ │ │ ├── mipmap-xhdpi
│ │ │ └── ic_launcher.png
│ │ │ ├── mipmap-xxhdpi
│ │ │ └── ic_launcher.png
│ │ │ ├── mipmap-xxxhdpi
│ │ │ └── ic_launcher.png
│ │ │ └── values
│ │ │ └── styles.xml
│ │ └── profile
│ │ └── AndroidManifest.xml
├── build.gradle
├── gradle.properties
├── gradle
│ └── wrapper
│ │ └── gradle-wrapper.properties
├── settings.gradle
└── settings_aar.gradle
├── backend Script
├── my_result.php
├── result.php
└── teamcode_db_result.sql
├── fonts
├── Alike-Regular.ttf
├── OpenSans-Bold.ttf
├── OpenSans-Regular.ttf
├── Quando.ttf
├── Raleway-Bold.ttf
├── Raleway-Regular.ttf
├── Raleway-Thin.ttf
├── Roboto-Black.ttf
├── Roboto-Bold.ttf
├── Roboto-Regular.ttf
└── Satisfy.ttf
├── img
├── announcement.png
├── banner.png
├── book.jpg
├── book.png
├── calendar.png
├── earning-logo-png.png
├── easy-removebg-preview.png
├── easy.jpg
├── grad.jpg
├── grad.png
├── icon.png
├── index.jpg
├── kadpoly-300x241.jpg
├── kadpoly.png
├── learn.png
├── nacoss.png
├── nacossLogo.png
├── nacoss_logo.jpg
├── pic1.png
├── pic10.png
├── pic11.png
├── pic12.png
├── pic13.png
├── pic14.png
├── pic2.png
├── pic3.png
├── pic4.png
├── pic5.png
├── pic6.png
├── pic7.png
├── pic8.png
├── pic9.png
├── png.png
├── power.png
├── powerr.png
├── res.jpeg
├── resuting.png
├── stud.jpg
├── stud.png
├── success.png
├── successful.png
├── test.jpg
├── test.png
├── unname.png
├── unnamed.png
└── user-icon.jpg
├── ios
├── .gitignore
├── Flutter
│ ├── AppFrameworkInfo.plist
│ ├── Debug.xcconfig
│ └── Release.xcconfig
├── Runner.xcodeproj
│ ├── project.pbxproj
│ ├── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ └── WorkspaceSettings.xcsettings
│ └── xcshareddata
│ │ └── xcschemes
│ │ └── Runner.xcscheme
├── Runner.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ │ ├── IDEWorkspaceChecks.plist
│ │ └── WorkspaceSettings.xcsettings
└── Runner
│ ├── AppDelegate.swift
│ ├── Assets.xcassets
│ ├── AppIcon.appiconset
│ │ ├── Contents.json
│ │ ├── Icon-App-1024x1024@1x.png
│ │ ├── Icon-App-20x20@1x.png
│ │ ├── Icon-App-20x20@2x.png
│ │ ├── Icon-App-20x20@3x.png
│ │ ├── Icon-App-29x29@1x.png
│ │ ├── Icon-App-29x29@2x.png
│ │ ├── Icon-App-29x29@3x.png
│ │ ├── Icon-App-40x40@1x.png
│ │ ├── Icon-App-40x40@2x.png
│ │ ├── Icon-App-40x40@3x.png
│ │ ├── Icon-App-60x60@2x.png
│ │ ├── Icon-App-60x60@3x.png
│ │ ├── Icon-App-76x76@1x.png
│ │ ├── Icon-App-76x76@2x.png
│ │ └── Icon-App-83.5x83.5@2x.png
│ └── LaunchImage.imageset
│ │ ├── Contents.json
│ │ ├── LaunchImage.png
│ │ ├── LaunchImage@2x.png
│ │ ├── LaunchImage@3x.png
│ │ └── README.md
│ ├── Base.lproj
│ ├── LaunchScreen.storyboard
│ └── Main.storyboard
│ ├── Info.plist
│ └── Runner-Bridging-Header.h
├── lib
├── home
│ ├── SplashScreen.dart
│ ├── home.dart
│ ├── login.dart
│ └── onBoardingScreen.dart
├── main.dart
├── screens
│ ├── admin
│ │ ├── about.dart
│ │ ├── addAnnouncement.dart
│ │ ├── addCourse.dart
│ │ ├── addMaterial.dart
│ │ ├── addMultiStudent.dart
│ │ ├── addStudent.dart
│ │ ├── adminDashboard.dart
│ │ ├── adminProfile.dart
│ │ ├── courseMaterialList.dart
│ │ ├── manageNotification.dart
│ │ ├── studentList.dart
│ │ └── successMsg.dart
│ └── student
│ │ ├── notificationView.dart
│ │ ├── notifications.dart
│ │ ├── resultList.dart
│ │ ├── resultView.dart
│ │ ├── studentAccount.dart
│ │ ├── studentDashboard.dart
│ │ ├── studentLogin.dart
│ │ └── studentProfile.dart
├── util
│ └── constants.dart
└── widgets
│ └── users_widget.dart
├── pubspec.lock
├── pubspec.yaml
└── test
└── widget_test.dart
/.gitignore:
--------------------------------------------------------------------------------
1 | # Miscellaneous
2 | *.class
3 | *.log
4 | *.pyc
5 | *.swp
6 | .DS_Store
7 | .atom/
8 | .buildlog/
9 | .history
10 | .svn/
11 |
12 | # IntelliJ related
13 | *.iml
14 | *.ipr
15 | *.iws
16 | .idea/
17 |
18 | # The .vscode folder contains launch configuration and tasks you configure in
19 | # VS Code which you may wish to be included in version control, so this line
20 | # is commented out by default.
21 | #.vscode/
22 |
23 | # Flutter/Dart/Pub related
24 | **/doc/api/
25 | **/ios/Flutter/.last_build_id
26 | .dart_tool/
27 | .flutter-plugins
28 | .flutter-plugins-dependencies
29 | .packages
30 | .pub-cache/
31 | .pub/
32 | /build/
33 |
34 | # Web related
35 | lib/generated_plugin_registrant.dart
36 |
37 | # Symbolication related
38 | app.*.symbols
39 |
40 | # Obfuscation related
41 | app.*.map.json
42 |
43 | # Exceptions to above rules.
44 | !/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages
45 |
--------------------------------------------------------------------------------
/.metadata:
--------------------------------------------------------------------------------
1 | # This file tracks properties of this Flutter project.
2 | # Used by Flutter tool to assess capabilities and perform upgrades etc.
3 | #
4 | # This file should be version controlled and should not be manually edited.
5 |
6 | version:
7 | revision: 216dee60c0cc9449f0b29bcf922974d612263e24
8 | channel: stable
9 |
10 | project_type: app
11 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # result
2 |
3 | A new Flutter project.
4 |
5 | ## Getting Started
6 |
7 | This project is a starting point for a Flutter application.
8 |
9 | A few resources to get you started if this is your first Flutter project:
10 |
11 | - [Lab: Write your first Flutter app](https://flutter.dev/docs/get-started/codelab)
12 | - [Cookbook: Useful Flutter samples](https://flutter.dev/docs/cookbook)
13 |
14 | For help getting started with Flutter, view our
15 | [online documentation](https://flutter.dev/docs), which offers tutorials,
16 | samples, guidance on mobile development, and a full API reference.
17 |
--------------------------------------------------------------------------------
/SQL File/teamcode_db_result.sql:
--------------------------------------------------------------------------------
1 | -- phpMyAdmin SQL Dump
2 | -- version 4.9.5
3 | -- https://www.phpmyadmin.net/
4 | --
5 | -- Host: localhost:3306
6 | -- Generation Time: Feb 05, 2021 at 09:53 AM
7 | -- Server version: 5.7.33
8 | -- PHP Version: 7.3.6
9 |
10 | SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
11 | SET AUTOCOMMIT = 0;
12 | START TRANSACTION;
13 | SET time_zone = "+00:00";
14 |
15 |
16 | /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
17 | /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
18 | /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
19 | /*!40101 SET NAMES utf8mb4 */;
20 |
21 | --
22 | -- Database: `teamcode_db_result`
23 | --
24 |
25 | -- --------------------------------------------------------
26 |
27 | --
28 | -- Table structure for table `announcement`
29 | --
30 |
31 | CREATE TABLE `announcement` (
32 | `announcement_id` int(11) NOT NULL,
33 | `title` varchar(50) NOT NULL,
34 | `post` varchar(1000) NOT NULL,
35 | `date_post` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
36 | ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
37 |
38 | --
39 | -- Dumping data for table `announcement`
40 | --
41 |
42 | INSERT INTO `announcement` (`announcement_id`, `title`, `post`, `date_post`) VALUES
43 | (1, 'School Resumption', 'School will be resume on the 4th of January 2021', '2020-12-24 15:35:49'),
44 | (4, 'Welcome Back', 'Welcoming messages from the staff', '2020-12-24 21:10:09'),
45 | (7, 'Happy Birthday🎂🎂', 'I wish you a happy Birthday dear🎂ðŸ˜ðŸ’™', '2020-12-27 11:48:20');
46 |
47 | -- --------------------------------------------------------
48 |
49 | --
50 | -- Table structure for table `result`
51 | --
52 |
53 | CREATE TABLE `result` (
54 | `result_id` int(11) NOT NULL,
55 | `regno` varchar(50) NOT NULL,
56 | `student` varchar(100) NOT NULL,
57 | `ccode` varchar(20) NOT NULL,
58 | `ctitle` varchar(100) NOT NULL,
59 | `cunit` varchar(50) NOT NULL,
60 | `level` varchar(50) NOT NULL,
61 | `semester` varchar(50) NOT NULL,
62 | `score` varchar(50) NOT NULL,
63 | `grade` varchar(20) NOT NULL,
64 | `pointt` varchar(20) NOT NULL,
65 | `date_uploaded` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
66 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
67 |
68 | --
69 | -- Dumping data for table `result`
70 | --
71 |
72 | INSERT INTO `result` (`result_id`, `regno`, `student`, `ccode`, `ctitle`, `cunit`, `level`, `semester`, `score`, `grade`, `pointt`, `date_uploaded`) VALUES
73 | (76, 'Regno', 'studentName', 'Ccode', 'Ctitle', 'Cunit', 'Level', 'Semester', 'Score', 'Grade', 'Point', '2021-02-03 09:21:05'),
74 | (77, '15/8073', 'Muhammad Ahmad', 'COM_412', 'Computer Programming(Java)', '3', '400', 'FIRST SEMESTER', '55', 'C', '8.25', '2021-02-03 09:21:05'),
75 | (78, '16/12050', 'Adam Musa Yau', 'COM_413', 'Project Management', '3', '400', 'FIRST SEMESTER', '60', 'BC', '9', '2021-02-03 09:21:05'),
76 | (79, '15/8075', 'Fatima Idris', 'COM_414', 'Compiler Construction', '3', '400', 'FIRST SEMESTER', '70', 'AB', '10.5', '2021-02-03 09:21:05'),
77 | (80, '15/8076', 'Usman Ibrahim', 'COM_415', 'Data Communication and Networks', '3', '400', 'FIRST SEMESTER', '75', 'A', '12', '2021-02-03 09:21:05'),
78 | (81, '15/8077', 'Sadiq Abubakar', 'COM_416', 'Multimedia', '3', '400', 'FIRST SEMESTER', '50', 'CD', '7.5', '2021-02-03 09:21:05'),
79 | (82, '15/8078', 'Zakariyau Yahaya', 'STA_411', 'Operation Research II', '3', '400', 'FIRST SEMESTER', '65', 'BC', '9.75', '2021-02-03 09:21:05'),
80 | (83, '15/12050', 'Idris Abbah', 'COM_412', 'Computer Programming(Java)', '3', '400', 'FIRST SEMESTER', '65', 'BC', '9.75', '2021-02-03 09:21:05'),
81 | (84, '15/8075', 'Fatima Idris', 'COM_412', 'Computer Programming(Java)', '3', '400', 'FIRST SEMESTER', '50', 'CD', '7.5', '2021-02-03 09:21:05'),
82 | (85, '15/8076', 'Usman Ibrahim', 'COM_412', 'Computer Programming(Java)', '3', '400', 'FIRST SEMESTER', '75', 'A', '12', '2021-02-03 09:21:05'),
83 | (86, '15/8077', 'Sadiq Abubakar', 'COM_412', 'Computer Programming(Java)', '3', '400', 'FIRST SEMESTER', '70', 'AB', '10.5', '2021-02-03 09:21:05'),
84 | (87, '15/8078', 'Zakariyau Yahaya', 'COM_412', 'Computer Programming(Java)', '3', '400', 'FIRST SEMESTER', '60', 'BC', '9', '2021-02-03 09:21:05'),
85 | (88, '15/8073', 'Muhammad Ahmad', 'COM_413', 'Project Management', '3', '400', 'FIRST SEMESTER', '55', 'C', '8.25', '2021-02-03 09:21:05'),
86 | (89, '15/8075', 'Fatima Idris', 'COM_413', 'Project Management', '3', '400', 'FIRST SEMESTER', '55', 'C', '8.25', '2021-02-03 09:21:05'),
87 | (90, '15/8076', 'Usman Ibrahim', 'COM_413', 'Project Management', '3', '400', 'FIRST SEMESTER', '60', 'BC', '9', '2021-02-03 09:21:05'),
88 | (91, '15/8077', 'Sadiq Abubakar', 'COM_413', 'Project Management', '3', '400', 'FIRST SEMESTER', '70', 'AB', '10.5', '2021-02-03 09:21:05'),
89 | (92, '15/8078', 'Zakariyau Yahaya', 'COM_413', 'Project Management', '3', '400', 'FIRST SEMESTER', '75', 'A', '12', '2021-02-03 09:21:05'),
90 | (93, '15/8073', 'Muhammad Ahmad', 'COM_414', 'Compiler Construction', '3', '400', 'FIRST SEMESTER', '50', 'CD', '7.5', '2021-02-03 09:21:05'),
91 | (94, '16/12050', 'Adam Musa Yau', 'COM_414', 'Compiler Construction', '3', '400', 'FIRST SEMESTER', '65', 'BC', '9.75', '2021-02-03 09:21:05'),
92 | (95, '15/8076', 'Usman Ibrahim', 'COM_414', 'Compiler Construction', '3', '400', 'FIRST SEMESTER', '65', 'BC', '9.75', '2021-02-03 09:21:05'),
93 | (96, '15/8077', 'Sadiq Abubakar', 'COM_414', 'Compiler Construction', '3', '400', 'FIRST SEMESTER', '50', 'CD', '7.5', '2021-02-03 09:21:05'),
94 | (97, '15/8078', 'Zakariyau Yahaya', 'COM_414', 'Compiler Construction', '3', '400', 'FIRST SEMESTER', '75', 'A', '12', '2021-02-03 09:21:05'),
95 | (98, '15/8073', 'Muhammad Ahmad', 'COM_415', 'Data Communication and Networks', '3', '400', 'FIRST SEMESTER', '70', 'AB', '10.5', '2021-02-03 09:21:05'),
96 | (99, '16/12050', 'Adam Musa Yau', 'COM_415', 'Data Communication and Networks', '3', '400', 'FIRST SEMESTER', '60', 'BC', '9', '2021-02-03 09:21:05'),
97 | (100, '15/8075', 'Fatima Idris', 'COM_415', 'Data Communication and Networks', '3', '400', 'FIRST SEMESTER', '55', 'C', '8.25', '2021-02-03 09:21:05'),
98 | (101, '15/8077', 'Sadiq Abubakar', 'COM_415', 'Data Communication and Networks', '3', '400', 'FIRST SEMESTER', '70', 'AB', '10.5', '2021-02-03 09:21:05'),
99 | (102, '15/8078', 'Zakariyau Yahaya', 'COM_415', 'Data Communication and Networks', '3', '400', 'FIRST SEMESTER', '75', 'A', '12', '2021-02-03 09:21:05'),
100 | (103, '15/8073', 'Muhammad Ahmad', 'COM_416', 'Multimedia', '3', '400', 'FIRST SEMESTER', '50', 'CD', '7.5', '2021-02-03 09:21:05'),
101 | (104, '16/12050', 'Adam Musa Yau', 'COM_416', 'Multimedia', '3', '400', 'FIRST SEMESTER', '65', 'BC', '9.75', '2021-02-03 09:21:05'),
102 | (105, '15/8075', 'Fatima Idris', 'COM_416', 'Multimedia', '3', '400', 'FIRST SEMESTER', '75', 'A', '12', '2021-02-03 09:21:05'),
103 | (106, '15/8076', 'Usman Ibrahim', 'COM_416', 'Multimedia', '3', '400', 'FIRST SEMESTER', '70', 'AB', '10.5', '2021-02-03 09:21:05'),
104 | (107, '15/8078', 'Zakariyau Yahaya', 'COM_416', 'Multimedia', '3', '400', 'FIRST SEMESTER', '70', 'AB', '10.5', '2021-02-03 09:21:05'),
105 | (108, '15/8073', 'Muhammad Ahmad', 'STA_411', 'Operation Research II', '3', '400', 'FIRST SEMESTER', '75', 'A', '12', '2021-02-03 09:21:05'),
106 | (109, '16/12050', 'Adam Musa Yau', 'STA_411', 'Operation Research II', '3', '400', 'FIRST SEMESTER', '70', 'AB', '10.5', '2021-02-03 09:21:05'),
107 | (110, '15/8075', 'Fatima Idris', 'STA_411', 'Operation Research II', '3', '400', 'FIRST SEMESTER', '75', 'A', '12', '2021-02-03 09:21:05'),
108 | (111, '15/8076', 'Usman Ibrahim', 'STA_411', 'Operation Research II', '3', '400', 'FIRST SEMESTER', '70', 'AB', '10.5', '2021-02-03 09:21:05'),
109 | (112, '15/8077', 'Sadiq Abubakar', 'STA_411', 'Operation Research II', '3', '400', 'FIRST SEMESTER', '75', 'A', '12', '2021-02-03 09:21:05');
110 |
111 | -- --------------------------------------------------------
112 |
113 | --
114 | -- Table structure for table `students`
115 | --
116 |
117 | CREATE TABLE `students` (
118 | `student_id` bigint(20) UNSIGNED NOT NULL,
119 | `Student_name` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
120 | `gender` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
121 | `phone` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
122 | `email` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
123 | `regno` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
124 | `level` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
125 | `semester` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
126 | `password` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
127 | `picture` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
128 | `created_at` timestamp NULL DEFAULT NULL,
129 | `updated_at` timestamp NULL DEFAULT NULL
130 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
131 |
132 | --
133 | -- Dumping data for table `students`
134 | --
135 |
136 | INSERT INTO `students` (`student_id`, `Student_name`, `gender`, `phone`, `email`, `regno`, `level`, `semester`, `password`, `picture`, `created_at`, `updated_at`) VALUES
137 | (109, 'Mahmood Rabui Abubakar', '', '', '', '16/12054', 'HND-II', 'First Semester', '16/12054', '', NULL, NULL),
138 | (111, 'Adam Musa Yau', '', '', '', '16/12050', 'HND-II', 'First Semester', '16/12050', '', NULL, NULL),
139 | (112, 'Sani Abdullahi', '', '', '', '16/12051', 'HND-II', 'First Semester', '16/12051', '', NULL, NULL),
140 | (113, 'Yasir Murtala', '', '', '', '16/12052', 'HND-II', 'First Semester', '16/12052', '', NULL, NULL),
141 | (114, 'Shehu Isa Musa', '', '', '', '16/12053', 'HND-II', 'First Semester', '16/12053', '', NULL, NULL),
142 | (123, 'Adam Musa Yau', '', '', '', '16/12050', '400', 'First Semester', '16/12050', '', NULL, NULL),
143 | (124, 'Sani Abdullahi', '', '', '', '16/12051', '400', 'First Semester', '16/12051', '', NULL, NULL),
144 | (125, 'Sadeeq Umar', '', '', '', '15/8077', 'HND-II', 'First Semester', '15/8077', '', NULL, NULL);
145 |
146 | -- --------------------------------------------------------
147 |
148 | --
149 | -- Table structure for table `users`
150 | --
151 |
152 | CREATE TABLE `users` (
153 | `id` bigint(20) UNSIGNED NOT NULL,
154 | `name` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
155 | `email` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
156 | `email_verified_at` timestamp NULL DEFAULT NULL,
157 | `password` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
158 | `remember_token` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
159 | `created_at` timestamp NULL DEFAULT NULL,
160 | `updated_at` timestamp NULL DEFAULT NULL
161 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
162 |
163 | --
164 | -- Dumping data for table `users`
165 | --
166 |
167 | INSERT INTO `users` (`id`, `name`, `email`, `email_verified_at`, `password`, `remember_token`, `created_at`, `updated_at`) VALUES
168 | (1, 'Adam Musa Yau', 'result', '0000-00-00 00:00:00', '12345', 'adamcynaira', NULL, NULL);
169 |
170 | --
171 | -- Indexes for dumped tables
172 | --
173 |
174 | --
175 | -- Indexes for table `announcement`
176 | --
177 | ALTER TABLE `announcement`
178 | ADD PRIMARY KEY (`announcement_id`);
179 |
180 | --
181 | -- Indexes for table `result`
182 | --
183 | ALTER TABLE `result`
184 | ADD PRIMARY KEY (`result_id`);
185 |
186 | --
187 | -- Indexes for table `students`
188 | --
189 | ALTER TABLE `students`
190 | ADD PRIMARY KEY (`student_id`);
191 |
192 | --
193 | -- Indexes for table `users`
194 | --
195 | ALTER TABLE `users`
196 | ADD PRIMARY KEY (`id`),
197 | ADD UNIQUE KEY `users_email_unique` (`email`);
198 |
199 | --
200 | -- AUTO_INCREMENT for dumped tables
201 | --
202 |
203 | --
204 | -- AUTO_INCREMENT for table `announcement`
205 | --
206 | ALTER TABLE `announcement`
207 | MODIFY `announcement_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=9;
208 |
209 | --
210 | -- AUTO_INCREMENT for table `result`
211 | --
212 | ALTER TABLE `result`
213 | MODIFY `result_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=113;
214 |
215 | --
216 | -- AUTO_INCREMENT for table `students`
217 | --
218 | ALTER TABLE `students`
219 | MODIFY `student_id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=126;
220 |
221 | --
222 | -- AUTO_INCREMENT for table `users`
223 | --
224 | ALTER TABLE `users`
225 | MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;
226 | COMMIT;
227 |
228 | /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
229 | /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
230 | /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
231 |
--------------------------------------------------------------------------------
/android/.gitignore:
--------------------------------------------------------------------------------
1 | gradle-wrapper.jar
2 | /.gradle
3 | /captures/
4 | /gradlew
5 | /gradlew.bat
6 | /local.properties
7 | GeneratedPluginRegistrant.java
8 |
9 | # Remember to never publicly share your keystore.
10 | # See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app
11 | key.properties
12 |
--------------------------------------------------------------------------------
/android/app/build.gradle:
--------------------------------------------------------------------------------
1 | def localProperties = new Properties()
2 | def localPropertiesFile = rootProject.file('local.properties')
3 | if (localPropertiesFile.exists()) {
4 | localPropertiesFile.withReader('UTF-8') { reader ->
5 | localProperties.load(reader)
6 | }
7 | }
8 |
9 | def flutterRoot = localProperties.getProperty('flutter.sdk')
10 | if (flutterRoot == null) {
11 | throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
12 | }
13 |
14 | def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
15 | if (flutterVersionCode == null) {
16 | flutterVersionCode = '1'
17 | }
18 |
19 | def flutterVersionName = localProperties.getProperty('flutter.versionName')
20 | if (flutterVersionName == null) {
21 | flutterVersionName = '1.0'
22 | }
23 |
24 | apply plugin: 'com.android.application'
25 | apply plugin: 'kotlin-android'
26 | apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
27 |
28 | android {
29 | compileSdkVersion 29
30 |
31 | sourceSets {
32 | main.java.srcDirs += 'src/main/kotlin'
33 | }
34 |
35 | lintOptions {
36 | disable 'InvalidPackage'
37 | }
38 |
39 | defaultConfig {
40 | // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
41 | applicationId "com.example.result"
42 | minSdkVersion 16
43 | targetSdkVersion 28
44 | versionCode flutterVersionCode.toInteger()
45 | versionName flutterVersionName
46 | }
47 |
48 | buildTypes {
49 | release {
50 | // TODO: Add your own signing config for the release build.
51 | // Signing with the debug keys for now, so `flutter run --release` works.
52 | signingConfig signingConfigs.debug
53 | }
54 | }
55 | }
56 |
57 | flutter {
58 | source '../..'
59 | }
60 |
61 | dependencies {
62 | implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
63 | }
64 |
--------------------------------------------------------------------------------
/android/app/src/debug/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
'; print_r($column); 39 | 40 | $query2 = mysqli_query($connection, "INSERT INTO students (regno, Student_name, level, semester, password) VALUES('".$column[0]."', '".$column[1]."', '".$column[2]."', '".$column[3]."', '".$column[0]."')"); 41 | 42 | } 43 | } 44 | 45 | } 46 | 47 | 48 | 49 | //Fetch students from the Database 50 | if ($_SESSION['request'] == "FETCH ALL STUDENT") { 51 | 52 | $query6 = "SELECT * FROM students"; 53 | $result6 = mysqli_query($connection, $query6); 54 | $data = array(); 55 | while ($row = mysqli_fetch_assoc($result6)) { 56 | 57 | $data[] = $row; 58 | } 59 | 60 | header('Content-type: applicatio/json'); 61 | print(json_encode($data)); 62 | } 63 | 64 | 65 | 66 | //Count Records from the Database 67 | if ($_SESSION['request'] == "COUNT STUDENT") { 68 | 69 | $query7 = "SELECT count(*) FROM students"; 70 | $result7 = mysqli_query($connection, $query7); 71 | $data = array(); 72 | while ($row = mysqli_fetch_assoc($result7)) { 73 | 74 | $data[] = $row; 75 | } 76 | 77 | header('Content-type: applicatio/json'); 78 | print(json_encode($data)); 79 | } 80 | 81 | 82 | //Delete Student from the Database 83 | if ($_SESSION['request'] == "DELETE STUDENT") { 84 | 85 | $id = $_POST['id']; 86 | $query15 = "DELETE FROM students WHERE student_id = '$id'"; 87 | $result15 = mysqli_query($connection, $query15); 88 | } 89 | 90 | 91 | //Upload Result 92 | if ($_SESSION['request'] == "UPLOAD RESULT") { 93 | 94 | $filename = $_FILES["file"]["tmp_name"]; 95 | $filePath = 'result_uploads/'.$filename; 96 | $tmp_name = $_FILES['file']['tmp_name']; 97 | move_uploaded_file($tmp_name, $filePath); 98 | 99 | if ($_FILES["file"]["size"] > 0) { 100 | 101 | $file = fopen($filename, "r"); 102 | while (($column=fgetcsv($file, 1000, ',')) !==FALSE) { 103 | 104 | //echo ''; print_r($column); 105 | 106 | $query2 = mysqli_query($connection, "INSERT INTO result (regno, student, ccode, ctitle, cunit, level, semester, score, grade, pointt) VALUES('".$column[0]."', '".$column[1]."', '".$column[2]."', '".$column[3]."', '".$column[4]."', '".$column[5]."', '".$column[6]."', '".$column[7]."', '".$column[8]."', '".$column[9]."' )"); 107 | } 108 | } 109 | 110 | } 111 | 112 | 113 | 114 | //Add annoucement 115 | if ($_SESSION['request'] == "ADD ANNOUNCEMENT") { 116 | # code... 117 | 118 | $title=$_POST['title']; 119 | $post=$_POST['post']; 120 | 121 | $sql=mysqli_query($connection,"INSERT INTO announcement (title,post) VALUES('$title','$post')"); 122 | $result1 = mysqli_query($connection, $sql); 123 | 124 | } 125 | 126 | 127 | //Delete ANNOUNCEMENT from the Database 128 | if ($_SESSION['request'] == "DELETE ANNOUNCEMENT") { 129 | 130 | $id = $_POST['id']; 131 | $query15 = "DELETE FROM announcement WHERE announcement_id = '$id' 132 | "; 133 | $result15 = mysqli_query($connection, $query15); 134 | } 135 | 136 | //Fetch Announcement from the Database 137 | if ($_SESSION['request'] == "FETCH ALL ANNOUNCEMENT") { 138 | 139 | $query6 = "SELECT * FROM announcement"; 140 | $result6 = mysqli_query($connection, $query6); 141 | $data = array(); 142 | while ($row = mysqli_fetch_assoc($result6)) { 143 | 144 | $data[] = $row; 145 | } 146 | 147 | header('Content-type: applicatio/json'); 148 | print(json_encode($data)); 149 | } 150 | 151 | 152 | //Fetch result from the Database 153 | if ($_SESSION['request'] == "FETCH RESULT") { 154 | 155 | $regno = $_POST['regno']; 156 | $query6 = "SELECT DISTINCT level, regno, semester FROM result WHERE regno='$regno'"; 157 | $result6 = mysqli_query($connection, $query6); 158 | $data = array(); 159 | while ($row = mysqli_fetch_assoc($result6)) { 160 | 161 | $data[] = $row; 162 | } 163 | 164 | header('Content-type: applicatio/json'); 165 | print(json_encode($data)); 166 | } 167 | 168 | 169 | 170 | //Admin Login 171 | if ($_SESSION['request'] == "ADMIN LOGIN") { 172 | # code... 173 | 174 | $username = $_POST['username']; 175 | $password = $_POST['password']; 176 | 177 | $sql= mysqli_query($connection,"SELECT * FROM users WHERE email='$username' AND password='$password'"); 178 | 179 | 180 | $result=array(); 181 | 182 | while($row=mysqli_fetch_assoc($sql)) 183 | { 184 | 185 | $result[]=$row; 186 | 187 | } 188 | 189 | header('Content-Type: application/json'); 190 | echo json_encode($result); 191 | 192 | } 193 | 194 | 195 | 196 | //Student Login 197 | if ($_SESSION['request'] == "STUDENT LOGIN") { 198 | # code... 199 | 200 | $username = $_POST['username']; 201 | $password = $_POST['password']; 202 | 203 | $sql= mysqli_query($connection,"SELECT * FROM students WHERE regno='$username' AND password='$password'"); 204 | 205 | 206 | $result=array(); 207 | 208 | while($row=mysqli_fetch_assoc($sql)) 209 | { 210 | 211 | $result[]=$row; 212 | 213 | } 214 | 215 | header('Content-Type: application/json'); 216 | echo json_encode($result); 217 | 218 | } 219 | 220 | 221 | 222 | 223 | 224 | ?> -------------------------------------------------------------------------------- /backend Script/teamcode_db_result.sql: -------------------------------------------------------------------------------- 1 | -- phpMyAdmin SQL Dump 2 | -- version 4.9.5 3 | -- https://www.phpmyadmin.net/ 4 | -- 5 | -- Host: localhost:3306 6 | -- Generation Time: Feb 05, 2021 at 09:53 AM 7 | -- Server version: 5.7.33 8 | -- PHP Version: 7.3.6 9 | 10 | SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; 11 | SET AUTOCOMMIT = 0; 12 | START TRANSACTION; 13 | SET time_zone = "+00:00"; 14 | 15 | 16 | /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; 17 | /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; 18 | /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; 19 | /*!40101 SET NAMES utf8mb4 */; 20 | 21 | -- 22 | -- Database: `teamcode_db_result` 23 | -- 24 | 25 | -- -------------------------------------------------------- 26 | 27 | -- 28 | -- Table structure for table `announcement` 29 | -- 30 | 31 | CREATE TABLE `announcement` ( 32 | `announcement_id` int(11) NOT NULL, 33 | `title` varchar(50) NOT NULL, 34 | `post` varchar(1000) NOT NULL, 35 | `date_post` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP 36 | ) ENGINE=MyISAM DEFAULT CHARSET=latin1; 37 | 38 | -- 39 | -- Dumping data for table `announcement` 40 | -- 41 | 42 | INSERT INTO `announcement` (`announcement_id`, `title`, `post`, `date_post`) VALUES 43 | (1, 'School Resumption', 'School will be resume on the 4th of January 2021', '2020-12-24 15:35:49'), 44 | (4, 'Welcome Back', 'Welcoming messages from the staff', '2020-12-24 21:10:09'), 45 | (7, 'Happy Birthday🎂🎂', 'I wish you a happy Birthday dear🎂ðŸ˜ðŸ’™', '2020-12-27 11:48:20'); 46 | 47 | -- -------------------------------------------------------- 48 | 49 | -- 50 | -- Table structure for table `result` 51 | -- 52 | 53 | CREATE TABLE `result` ( 54 | `result_id` int(11) NOT NULL, 55 | `regno` varchar(50) NOT NULL, 56 | `student` varchar(100) NOT NULL, 57 | `ccode` varchar(20) NOT NULL, 58 | `ctitle` varchar(100) NOT NULL, 59 | `cunit` varchar(50) NOT NULL, 60 | `level` varchar(50) NOT NULL, 61 | `semester` varchar(50) NOT NULL, 62 | `score` varchar(50) NOT NULL, 63 | `grade` varchar(20) NOT NULL, 64 | `pointt` varchar(20) NOT NULL, 65 | `date_uploaded` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP 66 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1; 67 | 68 | -- 69 | -- Dumping data for table `result` 70 | -- 71 | 72 | INSERT INTO `result` (`result_id`, `regno`, `student`, `ccode`, `ctitle`, `cunit`, `level`, `semester`, `score`, `grade`, `pointt`, `date_uploaded`) VALUES 73 | (76, 'Regno', 'studentName', 'Ccode', 'Ctitle', 'Cunit', 'Level', 'Semester', 'Score', 'Grade', 'Point', '2021-02-03 09:21:05'), 74 | (77, '15/8073', 'Muhammad Ahmad', 'COM_412', 'Computer Programming(Java)', '3', '400', 'FIRST SEMESTER', '55', 'C', '8.25', '2021-02-03 09:21:05'), 75 | (78, '16/12050', 'Adam Musa Yau', 'COM_413', 'Project Management', '3', '400', 'FIRST SEMESTER', '60', 'BC', '9', '2021-02-03 09:21:05'), 76 | (79, '15/8075', 'Fatima Idris', 'COM_414', 'Compiler Construction', '3', '400', 'FIRST SEMESTER', '70', 'AB', '10.5', '2021-02-03 09:21:05'), 77 | (80, '15/8076', 'Usman Ibrahim', 'COM_415', 'Data Communication and Networks', '3', '400', 'FIRST SEMESTER', '75', 'A', '12', '2021-02-03 09:21:05'), 78 | (81, '15/8077', 'Sadiq Abubakar', 'COM_416', 'Multimedia', '3', '400', 'FIRST SEMESTER', '50', 'CD', '7.5', '2021-02-03 09:21:05'), 79 | (82, '15/8078', 'Zakariyau Yahaya', 'STA_411', 'Operation Research II', '3', '400', 'FIRST SEMESTER', '65', 'BC', '9.75', '2021-02-03 09:21:05'), 80 | (83, '15/12050', 'Idris Abbah', 'COM_412', 'Computer Programming(Java)', '3', '400', 'FIRST SEMESTER', '65', 'BC', '9.75', '2021-02-03 09:21:05'), 81 | (84, '15/8075', 'Fatima Idris', 'COM_412', 'Computer Programming(Java)', '3', '400', 'FIRST SEMESTER', '50', 'CD', '7.5', '2021-02-03 09:21:05'), 82 | (85, '15/8076', 'Usman Ibrahim', 'COM_412', 'Computer Programming(Java)', '3', '400', 'FIRST SEMESTER', '75', 'A', '12', '2021-02-03 09:21:05'), 83 | (86, '15/8077', 'Sadiq Abubakar', 'COM_412', 'Computer Programming(Java)', '3', '400', 'FIRST SEMESTER', '70', 'AB', '10.5', '2021-02-03 09:21:05'), 84 | (87, '15/8078', 'Zakariyau Yahaya', 'COM_412', 'Computer Programming(Java)', '3', '400', 'FIRST SEMESTER', '60', 'BC', '9', '2021-02-03 09:21:05'), 85 | (88, '15/8073', 'Muhammad Ahmad', 'COM_413', 'Project Management', '3', '400', 'FIRST SEMESTER', '55', 'C', '8.25', '2021-02-03 09:21:05'), 86 | (89, '15/8075', 'Fatima Idris', 'COM_413', 'Project Management', '3', '400', 'FIRST SEMESTER', '55', 'C', '8.25', '2021-02-03 09:21:05'), 87 | (90, '15/8076', 'Usman Ibrahim', 'COM_413', 'Project Management', '3', '400', 'FIRST SEMESTER', '60', 'BC', '9', '2021-02-03 09:21:05'), 88 | (91, '15/8077', 'Sadiq Abubakar', 'COM_413', 'Project Management', '3', '400', 'FIRST SEMESTER', '70', 'AB', '10.5', '2021-02-03 09:21:05'), 89 | (92, '15/8078', 'Zakariyau Yahaya', 'COM_413', 'Project Management', '3', '400', 'FIRST SEMESTER', '75', 'A', '12', '2021-02-03 09:21:05'), 90 | (93, '15/8073', 'Muhammad Ahmad', 'COM_414', 'Compiler Construction', '3', '400', 'FIRST SEMESTER', '50', 'CD', '7.5', '2021-02-03 09:21:05'), 91 | (94, '16/12050', 'Adam Musa Yau', 'COM_414', 'Compiler Construction', '3', '400', 'FIRST SEMESTER', '65', 'BC', '9.75', '2021-02-03 09:21:05'), 92 | (95, '15/8076', 'Usman Ibrahim', 'COM_414', 'Compiler Construction', '3', '400', 'FIRST SEMESTER', '65', 'BC', '9.75', '2021-02-03 09:21:05'), 93 | (96, '15/8077', 'Sadiq Abubakar', 'COM_414', 'Compiler Construction', '3', '400', 'FIRST SEMESTER', '50', 'CD', '7.5', '2021-02-03 09:21:05'), 94 | (97, '15/8078', 'Zakariyau Yahaya', 'COM_414', 'Compiler Construction', '3', '400', 'FIRST SEMESTER', '75', 'A', '12', '2021-02-03 09:21:05'), 95 | (98, '15/8073', 'Muhammad Ahmad', 'COM_415', 'Data Communication and Networks', '3', '400', 'FIRST SEMESTER', '70', 'AB', '10.5', '2021-02-03 09:21:05'), 96 | (99, '16/12050', 'Adam Musa Yau', 'COM_415', 'Data Communication and Networks', '3', '400', 'FIRST SEMESTER', '60', 'BC', '9', '2021-02-03 09:21:05'), 97 | (100, '15/8075', 'Fatima Idris', 'COM_415', 'Data Communication and Networks', '3', '400', 'FIRST SEMESTER', '55', 'C', '8.25', '2021-02-03 09:21:05'), 98 | (101, '15/8077', 'Sadiq Abubakar', 'COM_415', 'Data Communication and Networks', '3', '400', 'FIRST SEMESTER', '70', 'AB', '10.5', '2021-02-03 09:21:05'), 99 | (102, '15/8078', 'Zakariyau Yahaya', 'COM_415', 'Data Communication and Networks', '3', '400', 'FIRST SEMESTER', '75', 'A', '12', '2021-02-03 09:21:05'), 100 | (103, '15/8073', 'Muhammad Ahmad', 'COM_416', 'Multimedia', '3', '400', 'FIRST SEMESTER', '50', 'CD', '7.5', '2021-02-03 09:21:05'), 101 | (104, '16/12050', 'Adam Musa Yau', 'COM_416', 'Multimedia', '3', '400', 'FIRST SEMESTER', '65', 'BC', '9.75', '2021-02-03 09:21:05'), 102 | (105, '15/8075', 'Fatima Idris', 'COM_416', 'Multimedia', '3', '400', 'FIRST SEMESTER', '75', 'A', '12', '2021-02-03 09:21:05'), 103 | (106, '15/8076', 'Usman Ibrahim', 'COM_416', 'Multimedia', '3', '400', 'FIRST SEMESTER', '70', 'AB', '10.5', '2021-02-03 09:21:05'), 104 | (107, '15/8078', 'Zakariyau Yahaya', 'COM_416', 'Multimedia', '3', '400', 'FIRST SEMESTER', '70', 'AB', '10.5', '2021-02-03 09:21:05'), 105 | (108, '15/8073', 'Muhammad Ahmad', 'STA_411', 'Operation Research II', '3', '400', 'FIRST SEMESTER', '75', 'A', '12', '2021-02-03 09:21:05'), 106 | (109, '16/12050', 'Adam Musa Yau', 'STA_411', 'Operation Research II', '3', '400', 'FIRST SEMESTER', '70', 'AB', '10.5', '2021-02-03 09:21:05'), 107 | (110, '15/8075', 'Fatima Idris', 'STA_411', 'Operation Research II', '3', '400', 'FIRST SEMESTER', '75', 'A', '12', '2021-02-03 09:21:05'), 108 | (111, '15/8076', 'Usman Ibrahim', 'STA_411', 'Operation Research II', '3', '400', 'FIRST SEMESTER', '70', 'AB', '10.5', '2021-02-03 09:21:05'), 109 | (112, '15/8077', 'Sadiq Abubakar', 'STA_411', 'Operation Research II', '3', '400', 'FIRST SEMESTER', '75', 'A', '12', '2021-02-03 09:21:05'); 110 | 111 | -- -------------------------------------------------------- 112 | 113 | -- 114 | -- Table structure for table `students` 115 | -- 116 | 117 | CREATE TABLE `students` ( 118 | `student_id` bigint(20) UNSIGNED NOT NULL, 119 | `Student_name` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL, 120 | `gender` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL, 121 | `phone` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL, 122 | `email` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL, 123 | `regno` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL, 124 | `level` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL, 125 | `semester` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL, 126 | `password` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL, 127 | `picture` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL, 128 | `created_at` timestamp NULL DEFAULT NULL, 129 | `updated_at` timestamp NULL DEFAULT NULL 130 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; 131 | 132 | -- 133 | -- Dumping data for table `students` 134 | -- 135 | 136 | INSERT INTO `students` (`student_id`, `Student_name`, `gender`, `phone`, `email`, `regno`, `level`, `semester`, `password`, `picture`, `created_at`, `updated_at`) VALUES 137 | (109, 'Mahmood Rabui Abubakar', '', '', '', '16/12054', 'HND-II', 'First Semester', '16/12054', '', NULL, NULL), 138 | (111, 'Adam Musa Yau', '', '', '', '16/12050', 'HND-II', 'First Semester', '16/12050', '', NULL, NULL), 139 | (112, 'Sani Abdullahi', '', '', '', '16/12051', 'HND-II', 'First Semester', '16/12051', '', NULL, NULL), 140 | (113, 'Yasir Murtala', '', '', '', '16/12052', 'HND-II', 'First Semester', '16/12052', '', NULL, NULL), 141 | (114, 'Shehu Isa Musa', '', '', '', '16/12053', 'HND-II', 'First Semester', '16/12053', '', NULL, NULL), 142 | (123, 'Adam Musa Yau', '', '', '', '16/12050', '400', 'First Semester', '16/12050', '', NULL, NULL), 143 | (124, 'Sani Abdullahi', '', '', '', '16/12051', '400', 'First Semester', '16/12051', '', NULL, NULL), 144 | (125, 'Sadeeq Umar', '', '', '', '15/8077', 'HND-II', 'First Semester', '15/8077', '', NULL, NULL); 145 | 146 | -- -------------------------------------------------------- 147 | 148 | -- 149 | -- Table structure for table `users` 150 | -- 151 | 152 | CREATE TABLE `users` ( 153 | `id` bigint(20) UNSIGNED NOT NULL, 154 | `name` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL, 155 | `email` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL, 156 | `email_verified_at` timestamp NULL DEFAULT NULL, 157 | `password` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL, 158 | `remember_token` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL, 159 | `created_at` timestamp NULL DEFAULT NULL, 160 | `updated_at` timestamp NULL DEFAULT NULL 161 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; 162 | 163 | -- 164 | -- Dumping data for table `users` 165 | -- 166 | 167 | INSERT INTO `users` (`id`, `name`, `email`, `email_verified_at`, `password`, `remember_token`, `created_at`, `updated_at`) VALUES 168 | (1, 'Adam Musa Yau', 'result', '0000-00-00 00:00:00', '12345', 'adamcynaira', NULL, NULL); 169 | 170 | -- 171 | -- Indexes for dumped tables 172 | -- 173 | 174 | -- 175 | -- Indexes for table `announcement` 176 | -- 177 | ALTER TABLE `announcement` 178 | ADD PRIMARY KEY (`announcement_id`); 179 | 180 | -- 181 | -- Indexes for table `result` 182 | -- 183 | ALTER TABLE `result` 184 | ADD PRIMARY KEY (`result_id`); 185 | 186 | -- 187 | -- Indexes for table `students` 188 | -- 189 | ALTER TABLE `students` 190 | ADD PRIMARY KEY (`student_id`); 191 | 192 | -- 193 | -- Indexes for table `users` 194 | -- 195 | ALTER TABLE `users` 196 | ADD PRIMARY KEY (`id`), 197 | ADD UNIQUE KEY `users_email_unique` (`email`); 198 | 199 | -- 200 | -- AUTO_INCREMENT for dumped tables 201 | -- 202 | 203 | -- 204 | -- AUTO_INCREMENT for table `announcement` 205 | -- 206 | ALTER TABLE `announcement` 207 | MODIFY `announcement_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=9; 208 | 209 | -- 210 | -- AUTO_INCREMENT for table `result` 211 | -- 212 | ALTER TABLE `result` 213 | MODIFY `result_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=113; 214 | 215 | -- 216 | -- AUTO_INCREMENT for table `students` 217 | -- 218 | ALTER TABLE `students` 219 | MODIFY `student_id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=126; 220 | 221 | -- 222 | -- AUTO_INCREMENT for table `users` 223 | -- 224 | ALTER TABLE `users` 225 | MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2; 226 | COMMIT; 227 | 228 | /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; 229 | /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; 230 | /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; 231 | -------------------------------------------------------------------------------- /fonts/Alike-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamcyNaira/Result-Processing-and-Checking-App-using-Flutter-PHP-MySQL/3427eb811ea4fa37cd64214e355a4ad74558d800/fonts/Alike-Regular.ttf -------------------------------------------------------------------------------- /fonts/OpenSans-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamcyNaira/Result-Processing-and-Checking-App-using-Flutter-PHP-MySQL/3427eb811ea4fa37cd64214e355a4ad74558d800/fonts/OpenSans-Bold.ttf -------------------------------------------------------------------------------- /fonts/OpenSans-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamcyNaira/Result-Processing-and-Checking-App-using-Flutter-PHP-MySQL/3427eb811ea4fa37cd64214e355a4ad74558d800/fonts/OpenSans-Regular.ttf -------------------------------------------------------------------------------- /fonts/Quando.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamcyNaira/Result-Processing-and-Checking-App-using-Flutter-PHP-MySQL/3427eb811ea4fa37cd64214e355a4ad74558d800/fonts/Quando.ttf -------------------------------------------------------------------------------- /fonts/Raleway-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamcyNaira/Result-Processing-and-Checking-App-using-Flutter-PHP-MySQL/3427eb811ea4fa37cd64214e355a4ad74558d800/fonts/Raleway-Bold.ttf -------------------------------------------------------------------------------- /fonts/Raleway-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamcyNaira/Result-Processing-and-Checking-App-using-Flutter-PHP-MySQL/3427eb811ea4fa37cd64214e355a4ad74558d800/fonts/Raleway-Regular.ttf -------------------------------------------------------------------------------- /fonts/Raleway-Thin.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamcyNaira/Result-Processing-and-Checking-App-using-Flutter-PHP-MySQL/3427eb811ea4fa37cd64214e355a4ad74558d800/fonts/Raleway-Thin.ttf -------------------------------------------------------------------------------- /fonts/Roboto-Black.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamcyNaira/Result-Processing-and-Checking-App-using-Flutter-PHP-MySQL/3427eb811ea4fa37cd64214e355a4ad74558d800/fonts/Roboto-Black.ttf -------------------------------------------------------------------------------- /fonts/Roboto-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamcyNaira/Result-Processing-and-Checking-App-using-Flutter-PHP-MySQL/3427eb811ea4fa37cd64214e355a4ad74558d800/fonts/Roboto-Bold.ttf -------------------------------------------------------------------------------- /fonts/Roboto-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamcyNaira/Result-Processing-and-Checking-App-using-Flutter-PHP-MySQL/3427eb811ea4fa37cd64214e355a4ad74558d800/fonts/Roboto-Regular.ttf -------------------------------------------------------------------------------- /fonts/Satisfy.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamcyNaira/Result-Processing-and-Checking-App-using-Flutter-PHP-MySQL/3427eb811ea4fa37cd64214e355a4ad74558d800/fonts/Satisfy.ttf -------------------------------------------------------------------------------- /img/announcement.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamcyNaira/Result-Processing-and-Checking-App-using-Flutter-PHP-MySQL/3427eb811ea4fa37cd64214e355a4ad74558d800/img/announcement.png -------------------------------------------------------------------------------- /img/banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamcyNaira/Result-Processing-and-Checking-App-using-Flutter-PHP-MySQL/3427eb811ea4fa37cd64214e355a4ad74558d800/img/banner.png -------------------------------------------------------------------------------- /img/book.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamcyNaira/Result-Processing-and-Checking-App-using-Flutter-PHP-MySQL/3427eb811ea4fa37cd64214e355a4ad74558d800/img/book.jpg -------------------------------------------------------------------------------- /img/book.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamcyNaira/Result-Processing-and-Checking-App-using-Flutter-PHP-MySQL/3427eb811ea4fa37cd64214e355a4ad74558d800/img/book.png -------------------------------------------------------------------------------- /img/calendar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamcyNaira/Result-Processing-and-Checking-App-using-Flutter-PHP-MySQL/3427eb811ea4fa37cd64214e355a4ad74558d800/img/calendar.png -------------------------------------------------------------------------------- /img/earning-logo-png.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamcyNaira/Result-Processing-and-Checking-App-using-Flutter-PHP-MySQL/3427eb811ea4fa37cd64214e355a4ad74558d800/img/earning-logo-png.png -------------------------------------------------------------------------------- /img/easy-removebg-preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamcyNaira/Result-Processing-and-Checking-App-using-Flutter-PHP-MySQL/3427eb811ea4fa37cd64214e355a4ad74558d800/img/easy-removebg-preview.png -------------------------------------------------------------------------------- /img/easy.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamcyNaira/Result-Processing-and-Checking-App-using-Flutter-PHP-MySQL/3427eb811ea4fa37cd64214e355a4ad74558d800/img/easy.jpg -------------------------------------------------------------------------------- /img/grad.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamcyNaira/Result-Processing-and-Checking-App-using-Flutter-PHP-MySQL/3427eb811ea4fa37cd64214e355a4ad74558d800/img/grad.jpg -------------------------------------------------------------------------------- /img/grad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamcyNaira/Result-Processing-and-Checking-App-using-Flutter-PHP-MySQL/3427eb811ea4fa37cd64214e355a4ad74558d800/img/grad.png -------------------------------------------------------------------------------- /img/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamcyNaira/Result-Processing-and-Checking-App-using-Flutter-PHP-MySQL/3427eb811ea4fa37cd64214e355a4ad74558d800/img/icon.png -------------------------------------------------------------------------------- /img/index.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamcyNaira/Result-Processing-and-Checking-App-using-Flutter-PHP-MySQL/3427eb811ea4fa37cd64214e355a4ad74558d800/img/index.jpg -------------------------------------------------------------------------------- /img/kadpoly-300x241.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamcyNaira/Result-Processing-and-Checking-App-using-Flutter-PHP-MySQL/3427eb811ea4fa37cd64214e355a4ad74558d800/img/kadpoly-300x241.jpg -------------------------------------------------------------------------------- /img/kadpoly.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamcyNaira/Result-Processing-and-Checking-App-using-Flutter-PHP-MySQL/3427eb811ea4fa37cd64214e355a4ad74558d800/img/kadpoly.png -------------------------------------------------------------------------------- /img/learn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamcyNaira/Result-Processing-and-Checking-App-using-Flutter-PHP-MySQL/3427eb811ea4fa37cd64214e355a4ad74558d800/img/learn.png -------------------------------------------------------------------------------- /img/nacoss.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamcyNaira/Result-Processing-and-Checking-App-using-Flutter-PHP-MySQL/3427eb811ea4fa37cd64214e355a4ad74558d800/img/nacoss.png -------------------------------------------------------------------------------- /img/nacossLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamcyNaira/Result-Processing-and-Checking-App-using-Flutter-PHP-MySQL/3427eb811ea4fa37cd64214e355a4ad74558d800/img/nacossLogo.png -------------------------------------------------------------------------------- /img/nacoss_logo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamcyNaira/Result-Processing-and-Checking-App-using-Flutter-PHP-MySQL/3427eb811ea4fa37cd64214e355a4ad74558d800/img/nacoss_logo.jpg -------------------------------------------------------------------------------- /img/pic1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamcyNaira/Result-Processing-and-Checking-App-using-Flutter-PHP-MySQL/3427eb811ea4fa37cd64214e355a4ad74558d800/img/pic1.png -------------------------------------------------------------------------------- /img/pic10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamcyNaira/Result-Processing-and-Checking-App-using-Flutter-PHP-MySQL/3427eb811ea4fa37cd64214e355a4ad74558d800/img/pic10.png -------------------------------------------------------------------------------- /img/pic11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamcyNaira/Result-Processing-and-Checking-App-using-Flutter-PHP-MySQL/3427eb811ea4fa37cd64214e355a4ad74558d800/img/pic11.png -------------------------------------------------------------------------------- /img/pic12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamcyNaira/Result-Processing-and-Checking-App-using-Flutter-PHP-MySQL/3427eb811ea4fa37cd64214e355a4ad74558d800/img/pic12.png -------------------------------------------------------------------------------- /img/pic13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamcyNaira/Result-Processing-and-Checking-App-using-Flutter-PHP-MySQL/3427eb811ea4fa37cd64214e355a4ad74558d800/img/pic13.png -------------------------------------------------------------------------------- /img/pic14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamcyNaira/Result-Processing-and-Checking-App-using-Flutter-PHP-MySQL/3427eb811ea4fa37cd64214e355a4ad74558d800/img/pic14.png -------------------------------------------------------------------------------- /img/pic2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamcyNaira/Result-Processing-and-Checking-App-using-Flutter-PHP-MySQL/3427eb811ea4fa37cd64214e355a4ad74558d800/img/pic2.png -------------------------------------------------------------------------------- /img/pic3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamcyNaira/Result-Processing-and-Checking-App-using-Flutter-PHP-MySQL/3427eb811ea4fa37cd64214e355a4ad74558d800/img/pic3.png -------------------------------------------------------------------------------- /img/pic4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamcyNaira/Result-Processing-and-Checking-App-using-Flutter-PHP-MySQL/3427eb811ea4fa37cd64214e355a4ad74558d800/img/pic4.png -------------------------------------------------------------------------------- /img/pic5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamcyNaira/Result-Processing-and-Checking-App-using-Flutter-PHP-MySQL/3427eb811ea4fa37cd64214e355a4ad74558d800/img/pic5.png -------------------------------------------------------------------------------- /img/pic6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamcyNaira/Result-Processing-and-Checking-App-using-Flutter-PHP-MySQL/3427eb811ea4fa37cd64214e355a4ad74558d800/img/pic6.png -------------------------------------------------------------------------------- /img/pic7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamcyNaira/Result-Processing-and-Checking-App-using-Flutter-PHP-MySQL/3427eb811ea4fa37cd64214e355a4ad74558d800/img/pic7.png -------------------------------------------------------------------------------- /img/pic8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamcyNaira/Result-Processing-and-Checking-App-using-Flutter-PHP-MySQL/3427eb811ea4fa37cd64214e355a4ad74558d800/img/pic8.png -------------------------------------------------------------------------------- /img/pic9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamcyNaira/Result-Processing-and-Checking-App-using-Flutter-PHP-MySQL/3427eb811ea4fa37cd64214e355a4ad74558d800/img/pic9.png -------------------------------------------------------------------------------- /img/png.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamcyNaira/Result-Processing-and-Checking-App-using-Flutter-PHP-MySQL/3427eb811ea4fa37cd64214e355a4ad74558d800/img/png.png -------------------------------------------------------------------------------- /img/power.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamcyNaira/Result-Processing-and-Checking-App-using-Flutter-PHP-MySQL/3427eb811ea4fa37cd64214e355a4ad74558d800/img/power.png -------------------------------------------------------------------------------- /img/powerr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamcyNaira/Result-Processing-and-Checking-App-using-Flutter-PHP-MySQL/3427eb811ea4fa37cd64214e355a4ad74558d800/img/powerr.png -------------------------------------------------------------------------------- /img/res.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamcyNaira/Result-Processing-and-Checking-App-using-Flutter-PHP-MySQL/3427eb811ea4fa37cd64214e355a4ad74558d800/img/res.jpeg -------------------------------------------------------------------------------- /img/resuting.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamcyNaira/Result-Processing-and-Checking-App-using-Flutter-PHP-MySQL/3427eb811ea4fa37cd64214e355a4ad74558d800/img/resuting.png -------------------------------------------------------------------------------- /img/stud.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamcyNaira/Result-Processing-and-Checking-App-using-Flutter-PHP-MySQL/3427eb811ea4fa37cd64214e355a4ad74558d800/img/stud.jpg -------------------------------------------------------------------------------- /img/stud.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamcyNaira/Result-Processing-and-Checking-App-using-Flutter-PHP-MySQL/3427eb811ea4fa37cd64214e355a4ad74558d800/img/stud.png -------------------------------------------------------------------------------- /img/success.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamcyNaira/Result-Processing-and-Checking-App-using-Flutter-PHP-MySQL/3427eb811ea4fa37cd64214e355a4ad74558d800/img/success.png -------------------------------------------------------------------------------- /img/successful.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamcyNaira/Result-Processing-and-Checking-App-using-Flutter-PHP-MySQL/3427eb811ea4fa37cd64214e355a4ad74558d800/img/successful.png -------------------------------------------------------------------------------- /img/test.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamcyNaira/Result-Processing-and-Checking-App-using-Flutter-PHP-MySQL/3427eb811ea4fa37cd64214e355a4ad74558d800/img/test.jpg -------------------------------------------------------------------------------- /img/test.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamcyNaira/Result-Processing-and-Checking-App-using-Flutter-PHP-MySQL/3427eb811ea4fa37cd64214e355a4ad74558d800/img/test.png -------------------------------------------------------------------------------- /img/unname.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamcyNaira/Result-Processing-and-Checking-App-using-Flutter-PHP-MySQL/3427eb811ea4fa37cd64214e355a4ad74558d800/img/unname.png -------------------------------------------------------------------------------- /img/unnamed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamcyNaira/Result-Processing-and-Checking-App-using-Flutter-PHP-MySQL/3427eb811ea4fa37cd64214e355a4ad74558d800/img/unnamed.png -------------------------------------------------------------------------------- /img/user-icon.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamcyNaira/Result-Processing-and-Checking-App-using-Flutter-PHP-MySQL/3427eb811ea4fa37cd64214e355a4ad74558d800/img/user-icon.jpg -------------------------------------------------------------------------------- /ios/.gitignore: -------------------------------------------------------------------------------- 1 | *.mode1v3 2 | *.mode2v3 3 | *.moved-aside 4 | *.pbxuser 5 | *.perspectivev3 6 | **/*sync/ 7 | .sconsign.dblite 8 | .tags* 9 | **/.vagrant/ 10 | **/DerivedData/ 11 | Icon? 12 | **/Pods/ 13 | **/.symlinks/ 14 | profile 15 | xcuserdata 16 | **/.generated/ 17 | Flutter/App.framework 18 | Flutter/Flutter.framework 19 | Flutter/Flutter.podspec 20 | Flutter/Generated.xcconfig 21 | Flutter/app.flx 22 | Flutter/app.zip 23 | Flutter/flutter_assets/ 24 | Flutter/flutter_export_environment.sh 25 | ServiceDefinitions.json 26 | Runner/GeneratedPluginRegistrant.* 27 | 28 | # Exceptions to above rules. 29 | !default.mode1v3 30 | !default.mode2v3 31 | !default.pbxuser 32 | !default.perspectivev3 33 | -------------------------------------------------------------------------------- /ios/Flutter/AppFrameworkInfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 |4 | 27 | -------------------------------------------------------------------------------- /ios/Flutter/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Generated.xcconfig" 2 | -------------------------------------------------------------------------------- /ios/Flutter/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Generated.xcconfig" 2 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 |5 | 26 |CFBundleDevelopmentRegion 6 |$(DEVELOPMENT_LANGUAGE) 7 |CFBundleExecutable 8 |App 9 |CFBundleIdentifier 10 |io.flutter.flutter.app 11 |CFBundleInfoDictionaryVersion 12 |6.0 13 |CFBundleName 14 |App 15 |CFBundlePackageType 16 |FMWK 17 |CFBundleShortVersionString 18 |1.0 19 |CFBundleSignature 20 |???? 21 |CFBundleVersion 22 |1.0 23 |MinimumOSVersion 24 |8.0 25 |4 | 8 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 |6 | 7 |4 | 9 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 |5 | 8 |IDEDidComputeMac32BitWarning 6 |7 | 4 | 9 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme: -------------------------------------------------------------------------------- 1 | 2 |5 | 8 |PreviewsEnabled 6 |7 | 5 | 92 | -------------------------------------------------------------------------------- /ios/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 |8 | 25 |9 | 24 |15 | 23 |21 | 22 |30 | 44 |31 | 32 |33 | 41 |39 | 40 |42 | 43 |54 | 67 |56 | 64 |62 | 63 |65 | 66 |73 | 84 |75 | 83 |81 | 82 |86 | 87 |90 | 91 |4 | 8 | -------------------------------------------------------------------------------- /ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 |6 | 7 |4 | 9 | -------------------------------------------------------------------------------- /ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 |5 | 8 |IDEDidComputeMac32BitWarning 6 |7 | 4 | 9 | -------------------------------------------------------------------------------- /ios/Runner/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | import Flutter 3 | 4 | @UIApplicationMain 5 | @objc class AppDelegate: FlutterAppDelegate { 6 | override func application( 7 | _ application: UIApplication, 8 | didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? 9 | ) -> Bool { 10 | GeneratedPluginRegistrant.register(with: self) 11 | return super.application(application, didFinishLaunchingWithOptions: launchOptions) 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "size" : "20x20", 5 | "idiom" : "iphone", 6 | "filename" : "Icon-App-20x20@2x.png", 7 | "scale" : "2x" 8 | }, 9 | { 10 | "size" : "20x20", 11 | "idiom" : "iphone", 12 | "filename" : "Icon-App-20x20@3x.png", 13 | "scale" : "3x" 14 | }, 15 | { 16 | "size" : "29x29", 17 | "idiom" : "iphone", 18 | "filename" : "Icon-App-29x29@1x.png", 19 | "scale" : "1x" 20 | }, 21 | { 22 | "size" : "29x29", 23 | "idiom" : "iphone", 24 | "filename" : "Icon-App-29x29@2x.png", 25 | "scale" : "2x" 26 | }, 27 | { 28 | "size" : "29x29", 29 | "idiom" : "iphone", 30 | "filename" : "Icon-App-29x29@3x.png", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "size" : "40x40", 35 | "idiom" : "iphone", 36 | "filename" : "Icon-App-40x40@2x.png", 37 | "scale" : "2x" 38 | }, 39 | { 40 | "size" : "40x40", 41 | "idiom" : "iphone", 42 | "filename" : "Icon-App-40x40@3x.png", 43 | "scale" : "3x" 44 | }, 45 | { 46 | "size" : "60x60", 47 | "idiom" : "iphone", 48 | "filename" : "Icon-App-60x60@2x.png", 49 | "scale" : "2x" 50 | }, 51 | { 52 | "size" : "60x60", 53 | "idiom" : "iphone", 54 | "filename" : "Icon-App-60x60@3x.png", 55 | "scale" : "3x" 56 | }, 57 | { 58 | "size" : "20x20", 59 | "idiom" : "ipad", 60 | "filename" : "Icon-App-20x20@1x.png", 61 | "scale" : "1x" 62 | }, 63 | { 64 | "size" : "20x20", 65 | "idiom" : "ipad", 66 | "filename" : "Icon-App-20x20@2x.png", 67 | "scale" : "2x" 68 | }, 69 | { 70 | "size" : "29x29", 71 | "idiom" : "ipad", 72 | "filename" : "Icon-App-29x29@1x.png", 73 | "scale" : "1x" 74 | }, 75 | { 76 | "size" : "29x29", 77 | "idiom" : "ipad", 78 | "filename" : "Icon-App-29x29@2x.png", 79 | "scale" : "2x" 80 | }, 81 | { 82 | "size" : "40x40", 83 | "idiom" : "ipad", 84 | "filename" : "Icon-App-40x40@1x.png", 85 | "scale" : "1x" 86 | }, 87 | { 88 | "size" : "40x40", 89 | "idiom" : "ipad", 90 | "filename" : "Icon-App-40x40@2x.png", 91 | "scale" : "2x" 92 | }, 93 | { 94 | "size" : "76x76", 95 | "idiom" : "ipad", 96 | "filename" : "Icon-App-76x76@1x.png", 97 | "scale" : "1x" 98 | }, 99 | { 100 | "size" : "76x76", 101 | "idiom" : "ipad", 102 | "filename" : "Icon-App-76x76@2x.png", 103 | "scale" : "2x" 104 | }, 105 | { 106 | "size" : "83.5x83.5", 107 | "idiom" : "ipad", 108 | "filename" : "Icon-App-83.5x83.5@2x.png", 109 | "scale" : "2x" 110 | }, 111 | { 112 | "size" : "1024x1024", 113 | "idiom" : "ios-marketing", 114 | "filename" : "Icon-App-1024x1024@1x.png", 115 | "scale" : "1x" 116 | } 117 | ], 118 | "info" : { 119 | "version" : 1, 120 | "author" : "xcode" 121 | } 122 | } 123 | -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamcyNaira/Result-Processing-and-Checking-App-using-Flutter-PHP-MySQL/3427eb811ea4fa37cd64214e355a4ad74558d800/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamcyNaira/Result-Processing-and-Checking-App-using-Flutter-PHP-MySQL/3427eb811ea4fa37cd64214e355a4ad74558d800/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamcyNaira/Result-Processing-and-Checking-App-using-Flutter-PHP-MySQL/3427eb811ea4fa37cd64214e355a4ad74558d800/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamcyNaira/Result-Processing-and-Checking-App-using-Flutter-PHP-MySQL/3427eb811ea4fa37cd64214e355a4ad74558d800/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamcyNaira/Result-Processing-and-Checking-App-using-Flutter-PHP-MySQL/3427eb811ea4fa37cd64214e355a4ad74558d800/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamcyNaira/Result-Processing-and-Checking-App-using-Flutter-PHP-MySQL/3427eb811ea4fa37cd64214e355a4ad74558d800/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamcyNaira/Result-Processing-and-Checking-App-using-Flutter-PHP-MySQL/3427eb811ea4fa37cd64214e355a4ad74558d800/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamcyNaira/Result-Processing-and-Checking-App-using-Flutter-PHP-MySQL/3427eb811ea4fa37cd64214e355a4ad74558d800/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamcyNaira/Result-Processing-and-Checking-App-using-Flutter-PHP-MySQL/3427eb811ea4fa37cd64214e355a4ad74558d800/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamcyNaira/Result-Processing-and-Checking-App-using-Flutter-PHP-MySQL/3427eb811ea4fa37cd64214e355a4ad74558d800/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamcyNaira/Result-Processing-and-Checking-App-using-Flutter-PHP-MySQL/3427eb811ea4fa37cd64214e355a4ad74558d800/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamcyNaira/Result-Processing-and-Checking-App-using-Flutter-PHP-MySQL/3427eb811ea4fa37cd64214e355a4ad74558d800/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamcyNaira/Result-Processing-and-Checking-App-using-Flutter-PHP-MySQL/3427eb811ea4fa37cd64214e355a4ad74558d800/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamcyNaira/Result-Processing-and-Checking-App-using-Flutter-PHP-MySQL/3427eb811ea4fa37cd64214e355a4ad74558d800/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamcyNaira/Result-Processing-and-Checking-App-using-Flutter-PHP-MySQL/3427eb811ea4fa37cd64214e355a4ad74558d800/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "LaunchImage.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "LaunchImage@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "LaunchImage@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamcyNaira/Result-Processing-and-Checking-App-using-Flutter-PHP-MySQL/3427eb811ea4fa37cd64214e355a4ad74558d800/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamcyNaira/Result-Processing-and-Checking-App-using-Flutter-PHP-MySQL/3427eb811ea4fa37cd64214e355a4ad74558d800/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamcyNaira/Result-Processing-and-Checking-App-using-Flutter-PHP-MySQL/3427eb811ea4fa37cd64214e355a4ad74558d800/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md: -------------------------------------------------------------------------------- 1 | # Launch Screen Assets 2 | 3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory. 4 | 5 | You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. -------------------------------------------------------------------------------- /ios/Runner/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 |5 | 8 |PreviewsEnabled 6 |7 | 3 | 38 | -------------------------------------------------------------------------------- /ios/Runner/Base.lproj/Main.storyboard: -------------------------------------------------------------------------------- 1 | 2 |4 | 7 |5 | 6 | 8 | 9 | 34 |10 | 33 |11 | 31 |12 | 29 |13 | 16 |14 | 15 | 17 | 28 |18 | 19 | 22 |20 | 21 |23 | 24 | 27 |25 | 26 | 30 | 32 | 35 | 37 |36 | 3 | 27 | -------------------------------------------------------------------------------- /ios/Runner/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 |4 | 7 |5 | 6 | 8 | 9 | 26 |10 | 25 |11 | 24 |12 | 22 |13 | 16 |14 | 15 | 17 | 21 |18 | 19 | 20 | 23 | 4 | 46 | -------------------------------------------------------------------------------- /ios/Runner/Runner-Bridging-Header.h: -------------------------------------------------------------------------------- 1 | #import "GeneratedPluginRegistrant.h" 2 | -------------------------------------------------------------------------------- /lib/home/SplashScreen.dart: -------------------------------------------------------------------------------- 1 | import 'dart:async'; 2 | import 'package:result/home/home.dart'; 3 | import 'package:result/home/onBoardingScreen.dart'; 4 | import 'package:result/util/constants.dart'; 5 | import 'package:flutter/material.dart'; 6 | import 'package:flutter/services.dart'; 7 | import 'package:flutter_spinkit/flutter_spinkit.dart'; 8 | 9 | class SplashScreen extends StatefulWidget { 10 | @override 11 | _SplashScreenState createState() => _SplashScreenState(); 12 | } 13 | 14 | class _SplashScreenState extends State5 | 45 |CFBundleDevelopmentRegion 6 |$(DEVELOPMENT_LANGUAGE) 7 |CFBundleExecutable 8 |$(EXECUTABLE_NAME) 9 |CFBundleIdentifier 10 |$(PRODUCT_BUNDLE_IDENTIFIER) 11 |CFBundleInfoDictionaryVersion 12 |6.0 13 |CFBundleName 14 |result 15 |CFBundlePackageType 16 |APPL 17 |CFBundleShortVersionString 18 |$(FLUTTER_BUILD_NAME) 19 |CFBundleSignature 20 |???? 21 |CFBundleVersion 22 |$(FLUTTER_BUILD_NUMBER) 23 |LSRequiresIPhoneOS 24 |25 | UILaunchStoryboardName 26 |LaunchScreen 27 |UIMainStoryboardFile 28 |Main 29 |UISupportedInterfaceOrientations 30 |31 | 35 |UIInterfaceOrientationPortrait 32 |UIInterfaceOrientationLandscapeLeft 33 |UIInterfaceOrientationLandscapeRight 34 |UISupportedInterfaceOrientations~ipad 36 |37 | 42 |UIInterfaceOrientationPortrait 38 |UIInterfaceOrientationPortraitUpsideDown 39 |UIInterfaceOrientationLandscapeLeft 40 |UIInterfaceOrientationLandscapeRight 41 |UIViewControllerBasedStatusBarAppearance 43 |44 | { 15 | 16 | var spinkit = SpinKitThreeBounce( 17 | color: Constants.kPrimaryColor.withOpacity(0.8), 18 | size: 20.0, 19 | ); 20 | 21 | 22 | var spinkitWave = SpinKitWave( 23 | color: Constants.kPrimaryColor.withOpacity(0.8), 24 | size: 30.0, 25 | ); 26 | 27 | var ss = SpinKitFadingCircle( 28 | itemBuilder: (BuildContext context, int index) { 29 | return DecoratedBox( 30 | decoration: BoxDecoration( 31 | color: index.isEven ? Colors.red : Colors.green, 32 | ), 33 | ); 34 | }, 35 | ); 36 | 37 | bool isActive ; 38 | 39 | 40 | 41 | @override 42 | void initState(){ 43 | super.initState(); 44 | isActive = Constants.sharedPref.getBool("isActive"); 45 | Timer(Duration(seconds: 4), (){ 46 | isActive !=null ? Navigator.of(context).pushReplacement(MaterialPageRoute( 47 | builder: (context) => Home(), 48 | )) 49 | : 50 | Navigator.of(context).pushReplacement(MaterialPageRoute( 51 | builder: (context) => OnBoardingScreen(), 52 | )); 53 | }); 54 | } 55 | 56 | @override 57 | Widget build(BuildContext context) { 58 | SystemChrome.setPreferredOrientations( 59 | [DeviceOrientation.portraitDown, DeviceOrientation.portraitUp] 60 | ); 61 | return Scaffold( 62 | backgroundColor: Constants.kPrimaryColor.withOpacity(.03), 63 | body: Container( 64 | height: MediaQuery.of(context).size.height, 65 | width: MediaQuery.of(context).size.width, 66 | decoration: BoxDecoration( 67 | color: Color(0xfffbfbff), 68 | ), 69 | child: Stack( 70 | children: [ 71 | // Opacity( 72 | // opacity: 0.3, 73 | // child: Container( 74 | // decoration: BoxDecoration( 75 | // borderRadius: BorderRadius.circular(8.0), 76 | // image: DecorationImage( 77 | // image: AssetImage('images/team.png'), 78 | // fit: BoxFit.fill 79 | // ), 80 | // ), 81 | // ), 82 | // ), 83 | Column( 84 | crossAxisAlignment: CrossAxisAlignment.center, 85 | mainAxisAlignment: MainAxisAlignment.center, 86 | children: [ 87 | Expanded(child: Padding( 88 | padding: const EdgeInsets.only(top:220.0), 89 | child: Image( 90 | image: AssetImage( 91 | 'img/icon.png', 92 | ), 93 | ), 94 | // Image.Asset('img/kadpoly.png'), 95 | ), 96 | flex: 5, 97 | ), 98 | 99 | 100 | SizedBox( 101 | height: 34.0, 102 | ), 103 | // Center( 104 | // child: Text( 105 | // 'Result Processing ', 106 | // style: TextStyle( 107 | // color: Colors.black, 108 | // fontFamily: 'Raleway', 109 | // fontSize: 15.0, 110 | // fontWeight: FontWeight.w700), 111 | // ), 112 | // ), 113 | SizedBox( 114 | height: 20.0, 115 | ), 116 | Expanded(child: 117 | Padding( 118 | padding: const EdgeInsets.only(top:20.0), 119 | child: Container( 120 | child: Center( 121 | child: Text("DEPARTMENT OF COMPUTER SCIENCE DEPARTMENT \n KADUNA POLYTECHNIC", 122 | style: TextStyle(fontWeight: FontWeight.bold, fontSize: 10, color: Colors.black, fontFamily: 'Raleway'),textAlign: TextAlign.center, 123 | ), 124 | ), 125 | ), 126 | ), 127 | flex: 1, 128 | ), 129 | 130 | SizedBox( 131 | height: 20.0, 132 | ), 133 | Expanded(child: 134 | Container( 135 | child: spinkitWave, 136 | ), 137 | flex: 1, 138 | ), 139 | 140 | ], 141 | ) 142 | ], 143 | ), 144 | ), 145 | ); 146 | } 147 | } -------------------------------------------------------------------------------- /lib/home/home.dart: -------------------------------------------------------------------------------- 1 | import 'package:result/home/login.dart'; 2 | import 'package:result/screens/student/studentLogin.dart'; 3 | import 'package:result/util/constants.dart'; 4 | import 'package:flutter/material.dart'; 5 | 6 | class Home extends StatefulWidget { 7 | @override 8 | _HomeState createState() => _HomeState(); 9 | } 10 | 11 | class _HomeState extends State { 12 | @override 13 | Widget build(BuildContext context) { 14 | var screen = MediaQuery.of(context).size; 15 | return Scaffold( 16 | backgroundColor: Colors.white, 17 | body: SingleChildScrollView( 18 | child: Container( 19 | height: screen.height, 20 | padding: const EdgeInsets.symmetric(horizontal: 15), 21 | color: Colors.white30, 22 | width: double.infinity, 23 | child: Padding( 24 | padding: const EdgeInsets.only(top: 40.0), 25 | child: Column( 26 | mainAxisAlignment: MainAxisAlignment.center, 27 | crossAxisAlignment: CrossAxisAlignment.stretch, 28 | children: [ 29 | Expanded( 30 | flex: 1, 31 | child: Column( 32 | mainAxisAlignment: MainAxisAlignment.center, 33 | children: [ 34 | 35 | Center( 36 | child: Text( 37 | 'Result Processing and Checking Mobile App \n For', 38 | style: TextStyle( 39 | color: Constants.kPrimaryColor.withOpacity(0.8), 40 | fontFamily: 'Raleway', 41 | fontSize: 13.0, 42 | fontWeight: FontWeight.w600), 43 | textAlign: TextAlign.center, 44 | ), 45 | 46 | ), 47 | SizedBox(height: 5,), 48 | Center( 49 | child: Text( 50 | 'Department of Computer Science, Kaduna Polytechnic', 51 | style: TextStyle( 52 | color: Colors.black54, 53 | fontFamily: 'Satisfy', 54 | fontSize: 12.0, 55 | fontWeight: FontWeight.w600), 56 | textAlign: TextAlign.center, 57 | ), 58 | 59 | ), 60 | ], 61 | ), 62 | ), 63 | Expanded( 64 | flex: 4, 65 | child: Image.asset('img/stud.jpg'), 66 | ), 67 | Expanded( 68 | flex: 2, 69 | child: Column( 70 | children: [ 71 | Container( 72 | width: MediaQuery.of(context).size.width, 73 | child: FlatButton( 74 | color: Constants.kPrimaryColor.withOpacity(0.8), 75 | child: Text( 76 | 'STUDENT PORTAL', 77 | style: TextStyle(fontSize: 14), 78 | ), 79 | shape: OutlineInputBorder( 80 | borderSide: BorderSide(color: Constants.kPrimaryColor.withOpacity(0.1), width: 2), 81 | borderRadius: BorderRadius.circular(30.0), 82 | ), 83 | padding: EdgeInsets.all(18), 84 | textColor: Colors.white, 85 | onPressed: () { 86 | Future.delayed(Duration.zero, () async{ 87 | await Navigator.push(context, MaterialPageRoute(builder: (context) => StudentLogin())); 88 | }); 89 | }, 90 | ), 91 | ), 92 | SizedBox(height: 20.0,), 93 | Container( 94 | width: MediaQuery.of(context).size.width, 95 | child: FlatButton( 96 | color: Colors.white, 97 | child: Text( 98 | 'ADMIN LOGIN', 99 | style: TextStyle(fontSize: 14), 100 | ), 101 | splashColor: Constants.kPrimaryColor.withOpacity(0.8), 102 | highlightColor: Constants.kPrimaryColor.withOpacity(0.8), 103 | shape: OutlineInputBorder( 104 | borderSide: BorderSide(color: Constants.kPrimaryColor.withOpacity(0.5), width: 2), 105 | borderRadius: BorderRadius.circular(30.0), 106 | ), 107 | padding: EdgeInsets.all(17), 108 | textColor: Colors.black54, 109 | onPressed: () { 110 | Navigator.push( 111 | context, 112 | MaterialPageRoute( 113 | builder: (context) => AdminLogin())); 114 | }, 115 | ), 116 | ), 117 | ], 118 | ), 119 | ), 120 | ], 121 | ), 122 | ), 123 | ), 124 | ), 125 | ); 126 | } 127 | } -------------------------------------------------------------------------------- /lib/home/onBoardingScreen.dart: -------------------------------------------------------------------------------- 1 | import 'package:result/home/home.dart'; 2 | import 'package:flutter/material.dart'; 3 | import 'package:flutter/services.dart'; 4 | import 'package:result/util/constants.dart'; 5 | 6 | class OnBoardingScreen extends StatefulWidget { 7 | @override 8 | _OnBoardingScreenState createState() => _OnBoardingScreenState(); 9 | } 10 | 11 | class _OnBoardingScreenState extends State { 12 | final int _numPages =3; 13 | final PageController _pageController = PageController(initialPage: 0); 14 | int _currentPage = 0; 15 | 16 | List _builPageIndicatior(){ 17 | List list = []; 18 | for (var i = 0; i < _numPages; i++) { 19 | list.add(i == _currentPage ? _indicator(true) : _indicator(false)); 20 | } 21 | return list; 22 | } 23 | 24 | Widget _indicator(bool isActive){ 25 | return AnimatedContainer( 26 | duration: Duration(milliseconds: 150), 27 | margin: EdgeInsets.symmetric(horizontal: 8.0), 28 | height: 8.0, 29 | width: isActive ? 24.0 : 16.0, 30 | decoration: BoxDecoration( 31 | color: isActive ? Constants.kPrimaryColor.withOpacity(0.6) : Colors.grey[200], 32 | borderRadius: BorderRadius.all(Radius.circular(12)), 33 | ), 34 | ); 35 | } 36 | 37 | @override 38 | Widget build(BuildContext context) { 39 | return Scaffold( 40 | body: AnnotatedRegion ( 41 | value: SystemUiOverlayStyle.light, 42 | child: Container( 43 | color: Colors.white, 44 | child: Padding( 45 | padding: EdgeInsets.symmetric(vertical: 40.0), 46 | child: Column( 47 | crossAxisAlignment: CrossAxisAlignment.stretch, 48 | children: [ 49 | // Expanded( 50 | // flex: 1, 51 | // child: 52 | // Container( 53 | // alignment: Alignment.centerRight, 54 | // child: FlatButton(onPressed: () { 55 | // _pageController.jumpToPage(3); 56 | // }, 57 | // child: Text( 58 | // 'Skip', 59 | // style: TextStyle( 60 | // color: Colors.black, 61 | // fontFamily: 'raleway', 62 | // fontSize: 20,), 63 | // textAlign: TextAlign.center, 64 | // ), 65 | // ), 66 | // ), 67 | // ), 68 | Expanded( 69 | flex: 6, 70 | child: Container( 71 | child: PageView( 72 | physics: ClampingScrollPhysics(), 73 | controller: _pageController, 74 | onPageChanged: (int page){ 75 | setState(() { 76 | _currentPage = page; 77 | }); 78 | }, 79 | children: [ 80 | 81 | Padding( 82 | padding: const EdgeInsets.only(left: 20.0, right: 20.0, top: 120.0), 83 | child: Column( 84 | crossAxisAlignment: CrossAxisAlignment.start, 85 | children: [ 86 | Expanded(child: Center( 87 | child: Image( 88 | image: AssetImage( 89 | 'img/pic1.png', 90 | ), 91 | height: 250, 92 | width: 300, 93 | ), 94 | ), 95 | flex: 2, 96 | ), 97 | SizedBox( 98 | height: 25.0, 99 | ), 100 | Expanded(child: 101 | Text( 102 | 'Result processing and checking mobile app for the department of computer science, Kaduna polytechnic. ', 103 | style: TextStyle( 104 | color: Colors.black, 105 | fontFamily: 'Raleway', 106 | fontSize: 16,), 107 | textAlign: TextAlign.center, 108 | ), 109 | flex: 1, 110 | ), 111 | ], 112 | ), 113 | ), 114 | Padding( 115 | padding: const EdgeInsets.only(left: 20.0, right: 20.0, top: 140.0), 116 | child: Column( 117 | crossAxisAlignment: CrossAxisAlignment.start, 118 | children: [ 119 | Expanded(child: 120 | Center( 121 | child: Image( 122 | image: AssetImage( 123 | 'img/pic7.png', 124 | ), 125 | height: 250, 126 | width: 300, 127 | ), 128 | 129 | ), 130 | flex: 2, 131 | ), 132 | SizedBox( 133 | height: 25.0, 134 | ), 135 | Expanded(child: Text( 136 | 'Get access to your acadamic performance with few clicks', 137 | style: TextStyle( 138 | color: Colors.black, 139 | fontFamily: 'Raleway', 140 | fontSize: 16,), 141 | textAlign: TextAlign.center, 142 | ), 143 | flex: 1, 144 | ) 145 | ], 146 | ), 147 | ), 148 | Padding( 149 | padding: const EdgeInsets.only(left: 20.0, right: 20.0, top: 120.0), 150 | child: Column( 151 | crossAxisAlignment: CrossAxisAlignment.start, 152 | children: [ 153 | Expanded(child: 154 | Center( 155 | child: Image( 156 | image: AssetImage( 157 | 'img/pic8.png', 158 | ), 159 | height: 250, 160 | width: 300, 161 | ), 162 | ), 163 | flex: 2, 164 | 165 | ), 166 | SizedBox( 167 | height: 25.0, 168 | ), 169 | Expanded(child: 170 | Text( 171 | 'Download and install the app to get started', 172 | style: TextStyle( 173 | color: Colors.black, 174 | fontFamily: 'raleway', 175 | fontSize: 17,), 176 | textAlign: TextAlign.center, 177 | ), 178 | flex: 1, 179 | ) 180 | ], 181 | ), 182 | ), 183 | ], 184 | ), 185 | ), 186 | ), 187 | 188 | Row( 189 | mainAxisAlignment: MainAxisAlignment.center, 190 | children: _builPageIndicatior(), 191 | ), 192 | _currentPage != _numPages-1 193 | ? 194 | Expanded( 195 | flex: 1, 196 | child: Align( 197 | alignment: FractionalOffset.bottomCenter, 198 | child: Container( 199 | padding: EdgeInsets.fromLTRB(20.0, 0.0, 20.0, 0.0), 200 | width: MediaQuery.of(context).size.width, 201 | child: FlatButton( 202 | color: Constants.kPrimaryColor.withOpacity(0.8), 203 | child: Row( 204 | mainAxisAlignment: MainAxisAlignment.center, 205 | children: [ 206 | SizedBox(width: 30,), 207 | Expanded( 208 | flex: 8, 209 | child: Text( 210 | 'NEXT', 211 | style: TextStyle(fontSize: 14), 212 | textAlign: TextAlign.center, 213 | ), 214 | ), 215 | SizedBox(width: 0,), 216 | Expanded( 217 | flex: 1, 218 | child: Icon( 219 | Icons.arrow_forward_ios, 220 | ), 221 | ) 222 | ], 223 | ), 224 | shape: OutlineInputBorder( 225 | borderSide: BorderSide(color: Constants.kPrimaryColor.withOpacity(0.1), width: 2), 226 | borderRadius: BorderRadius.circular(30.0), 227 | ), 228 | padding: EdgeInsets.all(15), 229 | textColor: Colors.white, 230 | onPressed: () { 231 | _pageController.nextPage( 232 | duration: Duration(milliseconds: 500,), 233 | curve: Curves.ease); 234 | }, 235 | ), 236 | ), 237 | 238 | ), 239 | ) : Expanded( 240 | flex: 1, 241 | child: Align( 242 | alignment: FractionalOffset.bottomCenter, 243 | child: Container( 244 | padding: EdgeInsets.fromLTRB(20.0, 0.0, 20.0, 0.0), 245 | width: MediaQuery.of(context).size.width, 246 | child: FlatButton( 247 | color: Constants.kPrimaryColor.withOpacity(0.8), 248 | child: Text( 249 | 'GET STARTED', 250 | style: TextStyle(fontSize: 14), 251 | ), 252 | shape: OutlineInputBorder( 253 | borderSide: BorderSide(color: Constants.kPrimaryColor.withOpacity(0.1), width: 2), 254 | borderRadius: BorderRadius.circular(30.0), 255 | ), 256 | padding: EdgeInsets.all(18), 257 | textColor: Colors.white, 258 | onPressed: () { 259 | Constants.sharedPref.setBool("isActive", true); 260 | Navigator.push( 261 | context, 262 | MaterialPageRoute( 263 | builder: (context) => Home())); 264 | }, 265 | ), 266 | ), 267 | 268 | ), 269 | ), 270 | ], 271 | ), 272 | ), 273 | ), 274 | ), 275 | 276 | ); 277 | } 278 | } 279 | -------------------------------------------------------------------------------- /lib/main.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:result/home/SplashScreen.dart'; 3 | import 'package:result/util/constants.dart'; 4 | import 'package:shared_preferences/shared_preferences.dart'; 5 | 6 | void main() async{ 7 | WidgetsFlutterBinding.ensureInitialized(); 8 | Constants.sharedPref = await SharedPreferences.getInstance(); 9 | runApp(MyApp()); 10 | } 11 | 12 | class MyApp extends StatelessWidget { 13 | @override 14 | Widget build(BuildContext context) { 15 | return MaterialApp( 16 | title: 'Result Processing', 17 | debugShowCheckedModeBanner: false, 18 | theme: ThemeData( 19 | primarySwatch: Colors.blueGrey, 20 | visualDensity: VisualDensity.adaptivePlatformDensity, 21 | fontFamily: 'Raleway' 22 | ), 23 | home: SplashScreen(), 24 | ); 25 | } 26 | } 27 | 28 | -------------------------------------------------------------------------------- /lib/screens/admin/about.dart: -------------------------------------------------------------------------------- 1 | import 'package:result/util/constants.dart'; 2 | import 'package:result/widgets/users_widget.dart'; 3 | import 'package:flutter/material.dart'; 4 | 5 | class About extends StatefulWidget { 6 | @override 7 | _AboutState createState() => _AboutState(); 8 | } 9 | 10 | class _AboutState extends State { 11 | @override 12 | Widget build(BuildContext context) { 13 | return Scaffold( 14 | appBar: exAppBar(title: "", context: context), 15 | body: Container( 16 | color: Constants.kPrimaryColor.withOpacity(0.03), 17 | padding: EdgeInsets.fromLTRB(10.0, 5.0, 10.0, 5.0), 18 | height: MediaQuery.of(context).size.height, 19 | width: MediaQuery.of(context).size.width, 20 | child: Column( 21 | crossAxisAlignment: CrossAxisAlignment.start, 22 | children: [ 23 | SizedBox( 24 | height: 20, 25 | ), 26 | Expanded( 27 | flex: 1, 28 | child: Padding( 29 | padding: const EdgeInsets.only(left: 20.0), 30 | child: Text( 31 | 'About Software', 32 | style: TextStyle( 33 | color: Colors.black, 34 | fontFamily: 'Quando', 35 | fontSize: 24.0, 36 | fontWeight: FontWeight.w700), 37 | ), 38 | ),), 39 | SizedBox(height: 20.0,), 40 | Expanded( 41 | flex: 3, 42 | child: Center( 43 | child: Image( 44 | image: AssetImage( 45 | 'img/pic6.png', 46 | ), 47 | fit: BoxFit.fill, 48 | ), 49 | ),), 50 | SizedBox( 51 | height: 25.0, 52 | ), 53 | Expanded( 54 | flex: 2, 55 | child: 56 | Text( 57 | 'This is a flexible mobile app that allows computer science students to have access to thier accademic performance from the confort of thier home ', 58 | style: TextStyle( 59 | color: Colors.black54, 60 | fontFamily: 'raleway', 61 | fontSize: 18,), 62 | textAlign: TextAlign.center, 63 | ),) 64 | ], 65 | ), 66 | ), 67 | ); 68 | } 69 | } -------------------------------------------------------------------------------- /lib/screens/admin/addMaterial.dart: -------------------------------------------------------------------------------- 1 | import 'dart:async'; 2 | import 'dart:io'; 3 | 4 | import 'package:result/screens/admin/successMsg.dart'; 5 | import 'package:result/util/constants.dart'; 6 | import 'package:result/widgets/users_widget.dart'; 7 | import 'package:flutter/material.dart'; 8 | import 'package:path/path.dart'; 9 | import 'package:dio/dio.dart'; 10 | import 'package:gx_file_picker/gx_file_picker.dart'; 11 | import 'package:font_awesome_flutter/font_awesome_flutter.dart'; 12 | import 'package:connectivity/connectivity.dart'; 13 | 14 | class AddCourseMaterial extends StatefulWidget { 15 | AddCourseMaterial({this.selectedSemester, this.selectedClass, this.selectedCourse}); 16 | final selectedSemester; 17 | final String selectedClass; 18 | final String selectedCourse; 19 | 20 | @override 21 | _AddCourseMaterialState createState() => _AddCourseMaterialState(); 22 | } 23 | 24 | class _AddCourseMaterialState extends State { 25 | 26 | File _file; 27 | var result; 28 | final GlobalKey _scaffoldKey = new GlobalKey (); 29 | bool isLoading = false; 30 | 31 | 32 | _showSuccessSnackBar(context) { 33 | final snackbar = new SnackBar( 34 | content: new Text('Successfully Added', 35 | style: TextStyle(fontSize: 16.0, color: Colors.greenAccent)), 36 | onVisible: () { 37 | Timer(Duration(seconds: 3), () { 38 | Navigator.pushReplacement((context), MaterialPageRoute(builder: (context) => SuccessMsg(selectedClass: widget.selectedClass, selectedSemester: widget.selectedSemester,))); 39 | }); 40 | }, 41 | backgroundColor: Colors.black87, 42 | ); 43 | _scaffoldKey.currentState.showSnackBar(snackbar); 44 | } 45 | 46 | 47 | saveResultFile(filePath, context) async{ 48 | result = await Connectivity().checkConnectivity(); 49 | if (result == ConnectivityResult.mobile || 50 | result == ConnectivityResult.wifi) { 51 | //_showDialog(); 52 | 53 | setState(() { 54 | isLoading = true; 55 | }); 56 | isLoading 57 | ? _showDialog(context) 58 | : Navigator.of(context, rootNavigator: true).pop('dialog'); 59 | Timer(Duration(seconds: 3), () {}); 60 | _uploadFile(filePath, context); 61 | 62 | }else{ 63 | _showerr(context); 64 | } 65 | 66 | 67 | } 68 | 69 | 70 | 71 | Future getFiles() async { 72 | File file = await FilePicker.getFile(type: FileType.custom, allowedExtensions: ['csv']); 73 | 74 | setState(() { 75 | _file = file; 76 | }); 77 | 78 | 79 | } 80 | 81 | void _uploadFile(filePath, context) async{ 82 | String fileName = basename(filePath.path); 83 | print("File base name: $fileName"); 84 | 85 | try { 86 | FormData formData = new FormData.fromMap({ 87 | "request": "UPLOAD RESULT", 88 | "file" : await MultipartFile.fromFile(filePath.path, filename: fileName), 89 | 90 | }); 91 | 92 | Response response = await Dio().post("https://teamcoded.com.ng/result.php", data: formData); 93 | setState(() { 94 | isLoading = false; 95 | }); 96 | 97 | !isLoading 98 | ? Navigator.of(context, rootNavigator: true).pop('dialog') 99 | : _showDialog(context); 100 | Navigator.pushReplacement((context), MaterialPageRoute(builder: (context) => SuccessMsg(selectedClass: widget.selectedClass, selectedSemester: widget.selectedSemester,))); 101 | 102 | print("File response : ${response.statusCode}"); 103 | } catch (e) { 104 | print("Exception caught: $e"); 105 | } 106 | } 107 | 108 | void _showDialog(context) { 109 | // flutter defined function 110 | showDialog( 111 | context: context, 112 | barrierDismissible: false, 113 | builder: (BuildContext context) { 114 | // return object of type Dialog 115 | return AlertDialog( 116 | content: Row( 117 | children: [ 118 | new CircularProgressIndicator(), 119 | SizedBox( 120 | width: 25.0, 121 | ), 122 | new Text("Uploading Result..."), 123 | ], 124 | ), 125 | ); 126 | }, 127 | ); 128 | } 129 | 130 | void _showerr(context) { 131 | // flutter defined function 132 | showDialog( 133 | context: context, 134 | builder: (BuildContext context) { 135 | // return object of type Dialog 136 | return AlertDialog( 137 | content: Row( 138 | mainAxisSize: MainAxisSize.min, 139 | children: [ 140 | new IconButton( 141 | onPressed: (){ 142 | Navigator.of(context, rootNavigator: true).pop('dialog'); 143 | }, 144 | icon: Icon(Icons.cancel, size: 40.0,), 145 | color: Constants.kPrimaryColor.withOpacity(0.5), 146 | iconSize: 10, 147 | ), 148 | SizedBox( 149 | width: 25.0, 150 | ), 151 | Flexible(child: new Text("No internet connection", style: TextStyle(fontSize: 14),)), 152 | ], 153 | ), 154 | ); 155 | }, 156 | ); 157 | } 158 | 159 | 160 | 161 | @override 162 | Widget build(BuildContext context) { 163 | return Scaffold( 164 | key: _scaffoldKey, 165 | appBar: exAppBar(title: "", context: context), 166 | body: Container( 167 | color: Constants.kPrimaryColor.withOpacity(0.03), 168 | padding: EdgeInsets.fromLTRB(10.0, 5.0, 10.0, 5.0), 169 | height: MediaQuery.of(context).size.height, 170 | width: MediaQuery.of(context).size.width, 171 | child: SingleChildScrollView( 172 | child: Column( 173 | crossAxisAlignment: CrossAxisAlignment.start, 174 | children: [ 175 | SizedBox( 176 | height: 20, 177 | ), 178 | Padding( 179 | padding: const EdgeInsets.only(left: 20.0), 180 | child: Text( 181 | 'Upload Result', 182 | style: TextStyle( 183 | color: Colors.black, 184 | fontFamily: 'Quando', 185 | fontSize: 24.0, 186 | fontWeight: FontWeight.w700), 187 | ), 188 | ), 189 | SizedBox(height: 30.0,), 190 | ListView( 191 | primary: false, 192 | shrinkWrap: true, 193 | children: [ 194 | SizedBox( 195 | height: 10, 196 | ), 197 | Padding( 198 | padding: const EdgeInsets.only(left: 20.0, top: 10.0), 199 | child: Text( 200 | "Choose a file (Excel CSV format only) ", 201 | style: TextStyle(fontSize: 12, color: Colors.black87, fontWeight: FontWeight.w600), 202 | ), 203 | ), 204 | SizedBox( 205 | height: 10.0, 206 | ), 207 | Padding( 208 | padding: const EdgeInsets.only(left: 20.0, right: 10.0), 209 | child: FlatButton( 210 | highlightColor: Constants.kPrimaryColor.withOpacity(0.2), 211 | splashColor: Constants.kPrimaryColor.withOpacity(0.1), 212 | color: Colors.white, 213 | child: Row( 214 | mainAxisAlignment: MainAxisAlignment.spaceBetween, 215 | children: [ 216 | Icon(FontAwesomeIcons.fileExcel, color: Colors.black54), 217 | Text( 218 | 'Click here to choose a file', 219 | style: TextStyle(fontSize: 14, color: Colors.black), 220 | ), 221 | Icon(Icons.cloud_upload, color: Colors.black54), 222 | ], 223 | ), 224 | shape: OutlineInputBorder( 225 | borderSide: BorderSide(color: Constants.kPrimaryColor.withOpacity(0.3), width: 2), 226 | borderRadius: BorderRadius.circular(5), 227 | ), 228 | padding: EdgeInsets.all(18), 229 | textColor: Colors.white, 230 | onPressed: () { 231 | getFiles(); 232 | }, 233 | ), 234 | ), 235 | 236 | SizedBox( 237 | height: 30, 238 | ), 239 | 240 | Padding( 241 | padding: const EdgeInsets.only(left: 20.0, right: 10.0), 242 | child: FlatButton( 243 | color: Constants.kPrimaryColor.withOpacity(0.6), 244 | child: Text( 245 | 'UPLOAD FILE', 246 | style: TextStyle(fontSize: 14), 247 | ), 248 | shape: OutlineInputBorder( 249 | borderSide: BorderSide(color: Colors.white, width: 2), 250 | borderRadius: BorderRadius.circular(5), 251 | ), 252 | padding: EdgeInsets.all(18), 253 | textColor: Colors.white, 254 | onPressed: () { 255 | saveResultFile(_file,context); 256 | }, 257 | ), 258 | ), 259 | ], 260 | ), 261 | ], 262 | ), 263 | ), 264 | ), 265 | ); 266 | } 267 | } 268 | 269 | -------------------------------------------------------------------------------- /lib/screens/admin/addMultiStudent.dart: -------------------------------------------------------------------------------- 1 | import 'dart:async'; 2 | import 'dart:io'; 3 | 4 | import 'package:result/screens/admin/successMsg.dart'; 5 | import 'package:result/util/constants.dart'; 6 | import 'package:result/widgets/users_widget.dart'; 7 | import 'package:flutter/material.dart'; 8 | import 'package:path/path.dart'; 9 | import 'package:dio/dio.dart'; 10 | import 'package:gx_file_picker/gx_file_picker.dart'; 11 | import 'package:font_awesome_flutter/font_awesome_flutter.dart'; 12 | import 'package:connectivity/connectivity.dart'; 13 | 14 | class AddMultiStudent extends StatefulWidget { 15 | AddMultiStudent({this.selectedSemester, this.selectedClass, this.selectedCourse}); 16 | final selectedSemester; 17 | final String selectedClass; 18 | final String selectedCourse; 19 | 20 | @override 21 | _AddMultiStudentState createState() => _AddMultiStudentState(); 22 | } 23 | 24 | class _AddMultiStudentState extends State { 25 | 26 | File _file; 27 | var result; 28 | final GlobalKey _scaffoldKey = new GlobalKey (); 29 | bool isLoading = false; 30 | 31 | 32 | _showSuccessSnackBar(context) { 33 | final snackbar = new SnackBar( 34 | content: new Text('Successfully Added', 35 | style: TextStyle(fontSize: 16.0, color: Colors.greenAccent)), 36 | onVisible: () { 37 | Timer(Duration(seconds: 3), () { 38 | Navigator.pushReplacement((context), MaterialPageRoute(builder: (context) => SuccessMsg(selectedClass: widget.selectedClass, selectedSemester: widget.selectedSemester,))); 39 | }); 40 | }, 41 | backgroundColor: Colors.black87, 42 | ); 43 | _scaffoldKey.currentState.showSnackBar(snackbar); 44 | } 45 | 46 | 47 | saveStudentFile(filePath, context) async{ 48 | result = await Connectivity().checkConnectivity(); 49 | if (result == ConnectivityResult.mobile || 50 | result == ConnectivityResult.wifi) { 51 | //_showDialog(); 52 | 53 | setState(() { 54 | isLoading = true; 55 | }); 56 | isLoading 57 | ? _showDialog(context) 58 | : Navigator.of(context, rootNavigator: true).pop('dialog'); 59 | Timer(Duration(seconds: 3), () {}); 60 | _uploadFile(filePath, context); 61 | 62 | }else{ 63 | _showerr(context); 64 | } 65 | 66 | 67 | } 68 | 69 | 70 | 71 | Future getFiles() async { 72 | File file = await FilePicker.getFile(type: FileType.custom, allowedExtensions: ['csv']); 73 | 74 | setState(() { 75 | _file = file; 76 | }); 77 | 78 | 79 | } 80 | 81 | void _uploadFile(filePath, context) async{ 82 | String fileName = basename(filePath.path); 83 | print("File base name: $fileName"); 84 | 85 | try { 86 | FormData formData = new FormData.fromMap({ 87 | "request": "ADD MULTI STUDENT", 88 | "file" : await MultipartFile.fromFile(filePath.path, filename: fileName), 89 | 90 | }); 91 | 92 | Response response = await Dio().post("https://teamcoded.com.ng/result.php", data: formData); 93 | setState(() { 94 | isLoading = false; 95 | }); 96 | 97 | !isLoading 98 | ? Navigator.of(context, rootNavigator: true).pop('dialog') 99 | : _showDialog(context); 100 | Navigator.pushReplacement((context), MaterialPageRoute(builder: (context) => SuccessMsg(selectedClass: widget.selectedClass, selectedSemester: widget.selectedSemester,))); 101 | 102 | print("File response : ${response.statusCode}"); 103 | } catch (e) { 104 | print("Exception caught: $e"); 105 | } 106 | } 107 | 108 | void _showDialog(context) { 109 | // flutter defined function 110 | showDialog( 111 | context: context, 112 | barrierDismissible: false, 113 | builder: (BuildContext context) { 114 | // return object of type Dialog 115 | return AlertDialog( 116 | content: Row( 117 | children: [ 118 | new CircularProgressIndicator(), 119 | SizedBox( 120 | width: 25.0, 121 | ), 122 | new Text("Uploading Students..."), 123 | ], 124 | ), 125 | ); 126 | }, 127 | ); 128 | } 129 | 130 | void _showerr(context) { 131 | // flutter defined function 132 | showDialog( 133 | context: context, 134 | builder: (BuildContext context) { 135 | // return object of type Dialog 136 | return AlertDialog( 137 | content: Row( 138 | mainAxisSize: MainAxisSize.min, 139 | children: [ 140 | new IconButton( 141 | onPressed: (){ 142 | Navigator.of(context, rootNavigator: true).pop('dialog'); 143 | }, 144 | icon: Icon(Icons.cancel, size: 40.0,), 145 | color: Constants.kPrimaryColor.withOpacity(0.5), 146 | iconSize: 10, 147 | ), 148 | SizedBox( 149 | width: 25.0, 150 | ), 151 | Flexible(child: new Text("No internet connection", style: TextStyle(fontSize: 14),)), 152 | ], 153 | ), 154 | ); 155 | }, 156 | ); 157 | } 158 | 159 | 160 | 161 | @override 162 | Widget build(BuildContext context) { 163 | return Scaffold( 164 | key: _scaffoldKey, 165 | appBar: exAppBar(title: "", context: context), 166 | body: Container( 167 | color: Constants.kPrimaryColor.withOpacity(0.03), 168 | padding: EdgeInsets.fromLTRB(10.0, 5.0, 10.0, 5.0), 169 | height: MediaQuery.of(context).size.height, 170 | width: MediaQuery.of(context).size.width, 171 | child: SingleChildScrollView( 172 | child: Column( 173 | crossAxisAlignment: CrossAxisAlignment.start, 174 | children: [ 175 | SizedBox( 176 | height: 20, 177 | ), 178 | Padding( 179 | padding: const EdgeInsets.only(left: 20.0), 180 | child: Text( 181 | 'Add Student', 182 | style: TextStyle( 183 | color: Colors.black, 184 | fontFamily: 'Quando', 185 | fontSize: 24.0, 186 | fontWeight: FontWeight.w700), 187 | ), 188 | ), 189 | SizedBox(height: 30.0,), 190 | ListView( 191 | primary: false, 192 | shrinkWrap: true, 193 | children: [ 194 | SizedBox( 195 | height: 10, 196 | ), 197 | Padding( 198 | padding: const EdgeInsets.only(left: 20.0, top: 10.0), 199 | child: Text( 200 | "Choose a file (Excel CSV format only) ", 201 | style: TextStyle(fontSize: 12, color: Colors.black87, fontWeight: FontWeight.w600), 202 | ), 203 | ), 204 | SizedBox( 205 | height: 10.0, 206 | ), 207 | Padding( 208 | padding: const EdgeInsets.only(left: 20.0, right: 10.0), 209 | child: FlatButton( 210 | highlightColor: Constants.kPrimaryColor.withOpacity(0.2), 211 | splashColor: Constants.kPrimaryColor.withOpacity(0.1), 212 | color: Colors.white, 213 | child: Row( 214 | mainAxisAlignment: MainAxisAlignment.spaceBetween, 215 | children: [ 216 | Icon(FontAwesomeIcons.fileExcel, color: Colors.black54), 217 | Text( 218 | 'Click here to choose a file', 219 | style: TextStyle(fontSize: 14, color: Colors.black), 220 | ), 221 | Icon(Icons.cloud_upload, color: Colors.black54), 222 | ], 223 | ), 224 | shape: OutlineInputBorder( 225 | borderSide: BorderSide(color: Constants.kPrimaryColor.withOpacity(0.3), width: 2), 226 | borderRadius: BorderRadius.circular(5), 227 | ), 228 | padding: EdgeInsets.all(18), 229 | textColor: Colors.white, 230 | onPressed: () { 231 | getFiles(); 232 | }, 233 | ), 234 | ), 235 | 236 | SizedBox( 237 | height: 30, 238 | ), 239 | 240 | Padding( 241 | padding: const EdgeInsets.only(left: 20.0, right: 10.0), 242 | child: FlatButton( 243 | color: Constants.kPrimaryColor.withOpacity(0.6), 244 | child: Text( 245 | 'ADD STUDENT', 246 | style: TextStyle(fontSize: 14), 247 | ), 248 | shape: OutlineInputBorder( 249 | borderSide: BorderSide(color: Colors.white, width: 2), 250 | borderRadius: BorderRadius.circular(5), 251 | ), 252 | padding: EdgeInsets.all(18), 253 | textColor: Colors.white, 254 | onPressed: () { 255 | saveStudentFile(_file,context); 256 | }, 257 | ), 258 | ), 259 | ], 260 | ), 261 | ], 262 | ), 263 | ), 264 | ), 265 | ); 266 | } 267 | } 268 | 269 | -------------------------------------------------------------------------------- /lib/screens/admin/adminDashboard.dart: -------------------------------------------------------------------------------- 1 | import 'package:result/home/home.dart'; 2 | import 'package:result/screens/admin/about.dart'; 3 | import 'package:result/screens/admin/addMaterial.dart'; 4 | import 'package:result/screens/admin/addStudent.dart'; 5 | import 'package:result/screens/admin/adminProfile.dart'; 6 | import 'package:result/screens/admin/manageNotification.dart'; 7 | import 'package:result/screens/admin/studentList.dart'; 8 | import 'package:result/util/constants.dart'; 9 | import 'package:flutter/material.dart'; 10 | import 'package:font_awesome_flutter/font_awesome_flutter.dart'; 11 | 12 | class AdminDashboard extends StatefulWidget { 13 | @override 14 | _AdminDashboardState createState() => _AdminDashboardState(); 15 | } 16 | 17 | class _AdminDashboardState extends State { 18 | @override 19 | Widget build(BuildContext context) { 20 | return Container( 21 | color: Constants.kPrimaryColor.withOpacity(0.03), 22 | padding: EdgeInsets.fromLTRB(20.0, 5.0, 15.0, 5.0), 23 | height: MediaQuery.of(context).size.height, 24 | width: MediaQuery.of(context).size.width, 25 | child: Padding( 26 | padding: const EdgeInsets.only(top: 60.0, ), 27 | child: Column( 28 | crossAxisAlignment: CrossAxisAlignment.start, 29 | children: [ 30 | Expanded( 31 | flex: 1, 32 | child: Row( 33 | mainAxisAlignment: MainAxisAlignment.spaceBetween, 34 | crossAxisAlignment: CrossAxisAlignment.start, 35 | children: [ 36 | Column( 37 | mainAxisAlignment: MainAxisAlignment.start, 38 | crossAxisAlignment: CrossAxisAlignment.start, 39 | children: [ 40 | Text( 41 | 'Hi Admin,', 42 | style: TextStyle( 43 | color: Colors.black, 44 | fontFamily: 'Quando', 45 | fontSize: 18.0, 46 | fontWeight: FontWeight.w700), 47 | ), 48 | SizedBox(height: 5.0,), 49 | Text( 50 | 'Welcome back!', 51 | style: TextStyle( 52 | color: Colors.black54, 53 | fontFamily: 'raleway', 54 | fontSize: 14, 55 | ), 56 | ), 57 | ], 58 | ), 59 | CircleAvatar( 60 | radius: 20, 61 | backgroundImage: AssetImage('img/user-icon.jpg'), 62 | ), 63 | ], 64 | ), 65 | ), 66 | SizedBox(height: 15.0,), 67 | Expanded( 68 | flex: 2, 69 | child: Container( 70 | height: MediaQuery.of(context).size.height * 0.22, 71 | width: MediaQuery.of(context).size.width, 72 | child: Card( 73 | elevation: 8, 74 | child: InkWell( 75 | 76 | child: Column( 77 | crossAxisAlignment: CrossAxisAlignment.center, 78 | mainAxisAlignment: MainAxisAlignment.center, 79 | children: [ 80 | Image.asset('img/banner.png',), 81 | ], 82 | ), 83 | ), 84 | ), 85 | ), 86 | ), 87 | SizedBox(height: 25.0,), 88 | Padding( 89 | padding: const EdgeInsets.only(left:5.0), 90 | child: Text( 91 | 'Menu', 92 | style: TextStyle( 93 | color: Colors.black, 94 | fontFamily: 'Quando', 95 | fontSize: 18.0, 96 | fontWeight: FontWeight.w700), 97 | ), 98 | ), 99 | SizedBox(height: 5.0,), 100 | Expanded( 101 | flex: 4, 102 | child: GridView.count( 103 | crossAxisCount: 3, 104 | childAspectRatio: 1.0, 105 | padding: const EdgeInsets.all(0.0), 106 | mainAxisSpacing: 4.0, 107 | crossAxisSpacing: 4.0, 108 | shrinkWrap: true, 109 | children: [ 110 | chooseMenu( 111 | context, 112 | "Add Student", 113 | 'img/book.png', 114 | () { 115 | Navigator.push( 116 | context, 117 | MaterialPageRoute( 118 | builder: (context) => AddStudent())); 119 | }, 120 | ), 121 | chooseMenu( 122 | context, 123 | "Upload Result", 124 | 'img/unname.png', 125 | () { 126 | Navigator.push( 127 | context, 128 | MaterialPageRoute( 129 | builder: (context) => AddCourseMaterial())); 130 | }, 131 | ), 132 | chooseMenu( 133 | context, 134 | "Manage Student", 135 | 'img/user-icon.jpg', 136 | () { 137 | Navigator.push( 138 | context, 139 | MaterialPageRoute( 140 | builder: (context) => GetStudentList())); 141 | }, 142 | ), 143 | 144 | chooseMenu( 145 | context, 146 | "Announcement", 147 | 'img/announcement.png', 148 | () { 149 | Navigator.push( 150 | context, 151 | MaterialPageRoute( 152 | builder: (context) => ManageAnnouncement())); 153 | }, 154 | ), 155 | chooseMenu( 156 | context, 157 | "Account", 158 | 'img/test.png', 159 | () { 160 | Navigator.push( 161 | context, 162 | MaterialPageRoute( 163 | builder: (context) => AdminProfile())); 164 | }, 165 | ), 166 | chooseMenu( 167 | context, 168 | "Logout", 169 | 'img/powerr.png', 170 | () { 171 | Navigator.pushAndRemoveUntil(context, MaterialPageRoute(builder: (context) => Home()), (Route route) => false); 172 | }, 173 | ), 174 | 175 | ] 176 | ), 177 | ), 178 | ], 179 | ), 180 | ), 181 | ); 182 | } 183 | } 184 | 185 | class AdminBottomNav extends StatefulWidget { 186 | @override 187 | _AdminBottomNavState createState() => _AdminBottomNavState(); 188 | } 189 | 190 | class _AdminBottomNavState extends State { 191 | int _selectedIndex = 0; 192 | final menu = [ 193 | new AdminDashboard(), 194 | new About(), 195 | new AdminProfile(), 196 | ]; 197 | void onItemTapped(int index) { 198 | setState(() { 199 | _selectedIndex = index; 200 | }); 201 | } 202 | 203 | @override 204 | Widget build(BuildContext context) { 205 | return Scaffold( 206 | body: menu.elementAt(_selectedIndex), 207 | bottomNavigationBar: BottomNavigationBar( 208 | items: [ 209 | BottomNavigationBarItem( 210 | icon: Icon( 211 | FontAwesomeIcons.home, 212 | size: 15.0, 213 | ), 214 | title: Text( 215 | 'Home', 216 | style: TextStyle(fontSize: 12.0), 217 | ), 218 | ), 219 | BottomNavigationBarItem( 220 | icon: Icon( 221 | FontAwesomeIcons.infoCircle, 222 | size: 15.0, 223 | ), 224 | title: Text( 225 | 'About', 226 | style: TextStyle(fontSize: 12.0), 227 | ), 228 | ), 229 | 230 | BottomNavigationBarItem( 231 | icon: Icon( 232 | FontAwesomeIcons.userCircle, 233 | size: 15.0, 234 | ), 235 | title: Text( 236 | 'Account', 237 | style: TextStyle(fontSize: 12.0), 238 | ), 239 | ), 240 | ], 241 | fixedColor: Constants.kPrimaryColor.withOpacity(0.5), 242 | showUnselectedLabels: true, 243 | unselectedItemColor: Colors.black54, 244 | type: BottomNavigationBarType.fixed, 245 | currentIndex: _selectedIndex, 246 | onTap: onItemTapped, 247 | elevation: 5, 248 | backgroundColor: Colors.white, 249 | ), 250 | ); 251 | } 252 | } 253 | 254 | 255 | Widget chooseMenu(context, String text, String icon, Function route) { 256 | return Container( 257 | height: MediaQuery.of(context).size.height , 258 | width: MediaQuery.of(context).size.width, 259 | child: Card( 260 | child: InkWell( 261 | highlightColor: Constants.kPrimaryColor.withOpacity(0.3), 262 | onTap: route, 263 | child: Column( 264 | crossAxisAlignment: CrossAxisAlignment.center, 265 | mainAxisAlignment: MainAxisAlignment.center, 266 | children: [ 267 | Image.asset(icon,height: 30,), 268 | SizedBox( 269 | height: 20.0, 270 | ), 271 | Text( 272 | text, 273 | style: TextStyle( 274 | fontSize: 10.0, 275 | fontFamily: 'Quando', 276 | color: Colors.black54, 277 | ), 278 | textAlign: TextAlign.center, 279 | overflow: TextOverflow.ellipsis, 280 | ) 281 | ], 282 | 283 | ), 284 | ), 285 | ), 286 | ); 287 | } -------------------------------------------------------------------------------- /lib/screens/admin/adminProfile.dart: -------------------------------------------------------------------------------- 1 | 2 | import 'package:flutter/material.dart'; 3 | import 'package:result/util/constants.dart'; 4 | import 'package:font_awesome_flutter/font_awesome_flutter.dart'; 5 | 6 | class AdminProfile extends StatefulWidget { 7 | @override 8 | _AdminProfileState createState() => _AdminProfileState(); 9 | } 10 | 11 | class _AdminProfileState extends State { 12 | 13 | 14 | 15 | 16 | @override 17 | void initState() { 18 | super.initState(); 19 | } 20 | 21 | 22 | @override 23 | Widget build(BuildContext context) { 24 | return Scaffold( 25 | backgroundColor: Color(0xffDAE0E2), 26 | body: Stack( 27 | fit: StackFit.expand, 28 | children: [ 29 | Column( 30 | children: [ 31 | Container( 32 | width: double.infinity, 33 | height: 200, 34 | decoration: BoxDecoration( 35 | gradient: LinearGradient( 36 | colors: [ 37 | Constants.kPrimaryColor.withOpacity(0.8), 38 | Constants.kPrimaryColor.withOpacity(0.3), 39 | ], 40 | begin: Alignment.centerLeft, 41 | end: new Alignment(1.0, 1.0), 42 | ), 43 | ), 44 | child: Column( 45 | crossAxisAlignment: CrossAxisAlignment.center, 46 | mainAxisAlignment: MainAxisAlignment.center, 47 | children: [ 48 | 49 | ], 50 | ), 51 | ) 52 | ], 53 | ), 54 | 55 | Positioned( 56 | top: 130, 57 | left: 110, 58 | child: Column( 59 | crossAxisAlignment: CrossAxisAlignment.center, 60 | mainAxisAlignment: MainAxisAlignment.center, 61 | children: [ 62 | CircleAvatar( 63 | backgroundImage: AssetImage('img/user-icon.jpg'), 64 | radius: 70, 65 | ) 66 | ], 67 | ), 68 | ), 69 | 70 | Positioned( 71 | top: 290, 72 | left: 0, 73 | right: 0, 74 | child: Column( 75 | crossAxisAlignment: CrossAxisAlignment.stretch, 76 | mainAxisAlignment: MainAxisAlignment.center, 77 | children: [ 78 | Container( 79 | decoration: BoxDecoration( 80 | ), 81 | child: Column( 82 | mainAxisAlignment: MainAxisAlignment.start, 83 | crossAxisAlignment: CrossAxisAlignment.start, 84 | children: [ 85 | Row( 86 | children: [ 87 | Container( 88 | width: 80, 89 | child: Padding( 90 | padding: const EdgeInsets.all(10.0), 91 | child: Icon(FontAwesomeIcons.userAlt), 92 | ), 93 | ), 94 | 95 | Container( 96 | child: Padding( 97 | padding: const EdgeInsets.all(10.0), 98 | child: Text("Administrator", style: TextStyle(fontSize: 16, color: Colors.black54, fontWeight: FontWeight.w800,fontFamily: 'Alike'),), 99 | ), 100 | ), 101 | ], 102 | ), 103 | Divider(height: 20,), 104 | 105 | Row( 106 | children: [ 107 | Container( 108 | width: 80, 109 | child: Padding( 110 | padding: const EdgeInsets.all(10.0), 111 | child: Icon(FontAwesomeIcons.school), 112 | ), 113 | ), 114 | 115 | Container( 116 | child: Padding( 117 | padding: const EdgeInsets.all(10.0), 118 | child: Text("Kaduna Polytechnic", style: TextStyle(fontSize: 16, color: Colors.black54, fontWeight: FontWeight.w800,fontFamily: 'Alike'),), 119 | ), 120 | ), 121 | ], 122 | ), 123 | Divider(height: 20,), 124 | 125 | Row( 126 | children: [ 127 | Container( 128 | width: 80, 129 | child: Padding( 130 | padding: const EdgeInsets.all(10.0), 131 | child: Icon(FontAwesomeIcons.tag 132 | ), 133 | ), 134 | ), 135 | 136 | Container( 137 | child: Padding( 138 | padding: const EdgeInsets.all(10.0), 139 | child: Text("Administrator", style: TextStyle(fontSize: 16, color: Colors.black54, fontWeight: FontWeight.w800,fontFamily: 'Alike'),), 140 | ), 141 | ), 142 | ], 143 | ), 144 | Divider(height: 20,), 145 | 146 | Row( 147 | children: [ 148 | Container( 149 | width: 80, 150 | child: Padding( 151 | padding: const EdgeInsets.all(10.0), 152 | child: Icon(FontAwesomeIcons.mobile), 153 | ), 154 | ), 155 | 156 | Container( 157 | child: Padding( 158 | padding: const EdgeInsets.all(10.0), 159 | child: Text('080XXXXXXXX', style: TextStyle(fontSize: 16, color: Colors.black54, fontWeight: FontWeight.w800,fontFamily: 'Alike'),), 160 | ), 161 | ), 162 | ], 163 | ), 164 | Divider(height: 20,), 165 | 166 | 167 | Row( 168 | children: [ 169 | Container( 170 | width: 80, 171 | child: Padding( 172 | padding: const EdgeInsets.all(10.0), 173 | child: Icon(FontAwesomeIcons.mailBulk), 174 | ), 175 | ), 176 | 177 | Container( 178 | child: Padding( 179 | padding: const EdgeInsets.all(10.0), 180 | child: Text("info@kadunapolytechnic.com", style: TextStyle(fontSize: 16, color: Colors.black54, fontWeight: FontWeight.w800,fontFamily: 'Alike'),), 181 | ), 182 | ), 183 | ], 184 | ), 185 | Divider(height: 10,), 186 | 187 | Column( 188 | crossAxisAlignment: CrossAxisAlignment.stretch, 189 | children: [ 190 | Container( 191 | child: Center( 192 | child: RaisedButton( 193 | 194 | color: Constants.kPrimaryColor.withOpacity(0.8), 195 | child: Text("Update Profile", style: TextStyle(fontSize: 16, color: Colors.white, fontWeight: FontWeight.w800,fontFamily: 'Alike'),), 196 | onPressed: () { 197 | 198 | }, 199 | ), 200 | ), 201 | ) 202 | ], 203 | ) 204 | ], 205 | ), 206 | ) 207 | ], 208 | ), 209 | ) 210 | ], 211 | ), 212 | ); 213 | } 214 | } -------------------------------------------------------------------------------- /lib/screens/admin/manageNotification.dart: -------------------------------------------------------------------------------- 1 | import 'dart:async'; 2 | import 'dart:convert'; 3 | import 'dart:io'; 4 | 5 | import 'package:result/screens/admin/addAnnouncement.dart'; 6 | import 'package:result/util/constants.dart'; 7 | import 'package:result/widgets/users_widget.dart'; 8 | import 'package:flutter/material.dart'; 9 | import 'package:http/http.dart' as http; 10 | 11 | import 'package:path_provider/path_provider.dart'; 12 | 13 | List postList = []; 14 | class ManageAnnouncement extends StatefulWidget { 15 | 16 | 17 | @override 18 | _ManageAnnouncementState createState() => _ManageAnnouncementState(); 19 | } 20 | 21 | class _ManageAnnouncementState extends State { 22 | 23 | Future fetchAnnouncement() async { 24 | String fileName = "postData.json"; 25 | var dir = await getTemporaryDirectory(); 26 | File file = new File(dir.path + "/" + fileName); 27 | 28 | if (file.existsSync()) { 29 | var jsonData = file.readAsStringSync(); 30 | setState(() { 31 | postList = json.decode(jsonData); 32 | }); 33 | final response = 34 | await http.post("https://teamcoded.com.ng/result.php", body: { 35 | "request": "FETCH ALL ANNOUNCEMENT", 36 | }); 37 | setState(() { 38 | var convertDateToJson = jsonDecode(response.body); 39 | postList = convertDateToJson; 40 | file.writeAsStringSync(response.body, flush: true, mode: FileMode.write); 41 | 42 | }); 43 | return postList; 44 | }else{ 45 | final response = 46 | await http.post("https://teamcoded.com.ng/result.php", body: { 47 | "request": "FETCH ALL ANNOUNCEMENT", 48 | }); 49 | setState(() { 50 | var convertDateToJson = jsonDecode(response.body); 51 | postList = convertDateToJson; 52 | file.writeAsStringSync(response.body, flush: true, mode: FileMode.write); 53 | 54 | }); 55 | return postList; 56 | } 57 | } 58 | 59 | 60 | @override 61 | void initState() { 62 | fetchAnnouncement(); 63 | super.initState(); 64 | } 65 | 66 | @override 67 | Widget build(BuildContext context) { 68 | return Scaffold( 69 | appBar: exAppBar(title: "", context: context), 70 | body: Container( 71 | color: Constants.kPrimaryColor.withOpacity(0.03), 72 | padding: EdgeInsets.fromLTRB(10.0, 5.0, 10.0, 5.0), 73 | height: MediaQuery.of(context).size.height, 74 | width: MediaQuery.of(context).size.width, 75 | child: SingleChildScrollView( 76 | child: Column( 77 | crossAxisAlignment: CrossAxisAlignment.start, 78 | children: [ 79 | SizedBox( 80 | height: 10, 81 | ), 82 | Padding( 83 | padding: const EdgeInsets.only(left: 20.0), 84 | child: Text( 85 | 'Announcements', 86 | style: TextStyle( 87 | color: Colors.black, 88 | fontFamily: 'Quando', 89 | fontSize: 24.0, 90 | fontWeight: FontWeight.w700), 91 | ), 92 | ), 93 | SizedBox(height: 40.0,), 94 | Container( 95 | height: MediaQuery.of(context).size.height*0.7, 96 | child: postList != null ? ListView.builder( 97 | shrinkWrap: true, 98 | itemCount: postList == null ? 0 : postList.length, 99 | itemBuilder: (BuildContext context, int index) { 100 | return tile( 101 | context, 102 | postList[index]['title'][0], 103 | postList[index]['title'], 104 | postList[index]['post'], 105 | int.parse(postList[index]['announcement_id']), 106 | () async{ 107 | 108 | showDialog( 109 | context: context, 110 | builder: (BuildContext context) { 111 | // return object of type Dialog 112 | return AlertDialog( 113 | title: new Text("Confirm"), 114 | content: 115 | new Text("Are you sure you want to delete this announcement?"), 116 | actions:
[ 117 | // usually buttons at the bottom of the dialog 118 | Container( 119 | padding: EdgeInsets.only(left: 10.0, right: 10.0), 120 | width: MediaQuery.of(context).size.width, 121 | child: Row( 122 | crossAxisAlignment: CrossAxisAlignment.center, 123 | mainAxisAlignment: MainAxisAlignment.spaceBetween, 124 | children: [ 125 | new RaisedButton( 126 | color: Colors.red, 127 | child: Row( 128 | children: [ 129 | new Text("YES"), 130 | SizedBox(width: 5.0), 131 | Icon(Icons.check_circle), 132 | ], 133 | ), 134 | onPressed: () async{ 135 | var id = postList[index]['announcement_id']; 136 | await http.post("https://teamcoded.com.ng/result.php", body: { 137 | "request": "DELETE ANNOUNCEMENT", 138 | "id": id, 139 | }); 140 | fetchAnnouncement(); 141 | Navigator.of(context, rootNavigator: true).pop('dialog'); 142 | }, 143 | ), 144 | new RaisedButton( 145 | color: Colors.blueAccent, 146 | child: Row( 147 | children: [ 148 | new Text("NO"), 149 | SizedBox(width: 5.0), 150 | Icon(Icons.cancel) 151 | ], 152 | ), 153 | onPressed: () { 154 | Navigator.of(context, rootNavigator: true).pop('dialog'); 155 | }, 156 | ), 157 | ]), 158 | ) 159 | ], 160 | ); 161 | }, 162 | ); 163 | 164 | }, 165 | ); 166 | } 167 | 168 | 169 | ) : Center(child: Text('Loading...', style: TextStyle(color: Colors.black),),) 170 | ), 171 | ], 172 | ), 173 | 174 | ), 175 | ), 176 | floatingActionButton: FloatingActionButton( 177 | child: Icon(Icons.add), 178 | onPressed: (){ 179 | Navigator.push( 180 | context, 181 | MaterialPageRoute( 182 | builder: (context) => AddAnnouncement())); 183 | }, 184 | elevation: 5, 185 | ), 186 | ); 187 | } 188 | } 189 | 190 | 191 | tile(context, String char, String heading, String post, int id, Function route2){ 192 | return Column( 193 | children: [ 194 | Container( 195 | // color: Color(0Xffffffff), 196 | width: MediaQuery.of(context).size.width, 197 | 198 | child: Card( 199 | child: InkWell( 200 | highlightColor: Constants.kPrimaryColor.withOpacity(0.2), 201 | splashColor: Colors.teal, 202 | onTap: (){}, 203 | child: Row( 204 | mainAxisAlignment: MainAxisAlignment.spaceBetween, 205 | children: [ 206 | Flexible( 207 | child: Row( 208 | crossAxisAlignment: CrossAxisAlignment.start, 209 | mainAxisAlignment: MainAxisAlignment.start, 210 | children: [ 211 | Padding( 212 | padding: const EdgeInsets.only(left: 8.0, top: 10.0), 213 | child: CircleAvatar( 214 | radius: 25, 215 | backgroundColor: id.isOdd ? Colors.teal : Color(0XFF657ED4), 216 | child: Text(char), 217 | ), 218 | ), 219 | SizedBox( 220 | width: 10.0, 221 | ), 222 | Flexible( 223 | child: Padding( 224 | padding: const EdgeInsets.only(top:10.0), 225 | child: Column( 226 | crossAxisAlignment: CrossAxisAlignment.start, 227 | children: [ 228 | Text( 229 | heading, 230 | overflow: TextOverflow.ellipsis, 231 | style: TextStyle( 232 | fontSize: 14.0, 233 | fontFamily: 'Quando', 234 | color: Colors.black, 235 | fontWeight: FontWeight.w600 236 | ), 237 | 238 | ), 239 | 240 | SizedBox( height: 5.0,), 241 | Text( 242 | post, 243 | style: TextStyle( 244 | fontSize: 12.0, 245 | color: Colors.black54, 246 | ), 247 | overflow: TextOverflow.ellipsis, 248 | ), 249 | SizedBox( height: 25.0,), 250 | 251 | ], 252 | ), 253 | ), 254 | ), 255 | 256 | SizedBox( 257 | height: 5.0, 258 | ), 259 | 260 | ], 261 | ), 262 | ), 263 | IconButton( 264 | icon: Icon(Icons.delete,size: 25, color: Colors.black54,), 265 | onPressed: route2 266 | ) 267 | ], 268 | ), 269 | ), 270 | ), 271 | ), 272 | SizedBox(height: 5.0,), 273 | ], 274 | ); 275 | } 276 | -------------------------------------------------------------------------------- /lib/screens/admin/successMsg.dart: -------------------------------------------------------------------------------- 1 | import 'package:result/screens/admin/addMaterial.dart'; 2 | import 'package:result/screens/admin/addMultiStudent.dart'; 3 | import 'package:result/screens/admin/adminDashboard.dart'; 4 | import 'package:result/screens/admin/courseMaterialList.dart'; 5 | import 'package:result/util/constants.dart'; 6 | import 'package:result/widgets/users_widget.dart'; 7 | import 'package:flutter/material.dart'; 8 | 9 | 10 | class SuccessMsg extends StatefulWidget { 11 | SuccessMsg({this.selectedSemester, this.selectedClass}); 12 | final selectedSemester; 13 | final String selectedClass; 14 | 15 | 16 | @override 17 | _SuccessMsgState createState() => _SuccessMsgState(); 18 | } 19 | 20 | class _SuccessMsgState extends State { 21 | @override 22 | Widget build(BuildContext context) { 23 | return Scaffold( 24 | appBar: exAppBar(title: "", context: context), 25 | body: Container( 26 | color: Constants.kPrimaryColor.withOpacity(0.03), 27 | padding: EdgeInsets.fromLTRB(10.0, 5.0, 10.0, 5.0), 28 | height: MediaQuery.of(context).size.height, 29 | width: MediaQuery.of(context).size.width, 30 | child: SingleChildScrollView( 31 | child: Column( 32 | crossAxisAlignment: CrossAxisAlignment.start, 33 | children: [ 34 | SizedBox( 35 | height: 20, 36 | ), 37 | 38 | SizedBox(height: 10.0,), 39 | ListView( 40 | primary: false, 41 | shrinkWrap: true, 42 | children: [ 43 | 44 | SizedBox( 45 | height: 30, 46 | ), 47 | 48 | CircleAvatar( 49 | radius: 70, 50 | backgroundColor: Constants.kPrimaryColor.withOpacity(0.6), 51 | child: Icon(Icons.check, color: Colors.white, size: 60,), 52 | 53 | ), 54 | SizedBox(height: 30.0,), 55 | Center( 56 | child: Text( 57 | 'Success', 58 | style: TextStyle( 59 | color: Constants.kPrimaryColor.withOpacity(0.5), 60 | fontFamily: 'Quando', 61 | fontSize: 28.0, 62 | fontWeight: FontWeight.w700), 63 | ), 64 | ), 65 | 66 | 67 | SizedBox( 68 | height: 40, 69 | ), 70 | Center( 71 | child: Text( 72 | "Students Uploaded Successful", 73 | style: TextStyle( 74 | fontSize: 16.0, 75 | fontFamily: 'Quando', 76 | color: Colors.black54, 77 | fontWeight: FontWeight.w500 78 | ), 79 | ), 80 | ), 81 | SizedBox( 82 | height: 30, 83 | ), 84 | 85 | SizedBox( 86 | height: 50, 87 | ), 88 | Row( 89 | mainAxisAlignment: MainAxisAlignment.center, 90 | children: [ 91 | Container( 92 | height: 50, 93 | width: MediaQuery.of(context).size.width*0.45, 94 | child: Padding( 95 | padding: const EdgeInsets.only(left: 10.0, right: 10.0), 96 | child: FlatButton( 97 | color: Colors.white, 98 | child: Text( 99 | 'Dashboard', 100 | style: TextStyle(fontSize: 14), 101 | ), 102 | shape: OutlineInputBorder( 103 | borderSide: BorderSide(color: Constants.kPrimaryColor.withOpacity(0.6), width: 2), 104 | borderRadius: BorderRadius.circular(5), 105 | ), 106 | padding: EdgeInsets.all(18), 107 | textColor: Constants.kPrimaryColor.withOpacity(0.9), 108 | onPressed: () { 109 | Navigator.pushAndRemoveUntil(context, MaterialPageRoute(builder: (context) => AdminBottomNav()), (Route route) => false); 110 | }, 111 | ), 112 | ), 113 | ), 114 | SizedBox(width: 0.0,), 115 | Container( 116 | height: 50, 117 | width: MediaQuery.of(context).size.width*0.45, 118 | child: Padding( 119 | padding: const EdgeInsets.only(left: 10.0, right: 10.0), 120 | child: FlatButton( 121 | color: Colors.white, 122 | child: Text( 123 | 'Previous', 124 | style: TextStyle(fontSize: 14), 125 | ), 126 | shape: OutlineInputBorder( 127 | borderSide: BorderSide(color: Constants.kPrimaryColor.withOpacity(0.6), width: 2), 128 | borderRadius: BorderRadius.circular(5), 129 | ), 130 | padding: EdgeInsets.all(18), 131 | textColor: Constants.kPrimaryColor.withOpacity(0.9), 132 | onPressed: () { 133 | 134 | Navigator.pushReplacement((context), MaterialPageRoute(builder: (context) => AddCourseMaterial())); 135 | }, 136 | ), 137 | ), 138 | ), 139 | ], 140 | ), 141 | ], 142 | ), 143 | ], 144 | ), 145 | ), 146 | ), 147 | ); 148 | } 149 | } 150 | 151 | 152 | 153 | class SuccessMsgCourse extends StatefulWidget { 154 | @override 155 | _SuccessMsgCourseState createState() => _SuccessMsgCourseState(); 156 | } 157 | 158 | class _SuccessMsgCourseState extends State { 159 | @override 160 | Widget build(BuildContext context) { 161 | return Scaffold( 162 | appBar: exAppBar(title: " ", context: context), 163 | body: Container( 164 | color: Constants.kPrimaryColor.withOpacity(0.03), 165 | padding: EdgeInsets.fromLTRB(10.0, 5.0, 10.0, 5.0), 166 | height: MediaQuery.of(context).size.height, 167 | width: MediaQuery.of(context).size.width, 168 | child: SingleChildScrollView( 169 | child: Column( 170 | crossAxisAlignment: CrossAxisAlignment.start, 171 | children: [ 172 | SizedBox( 173 | height: 20, 174 | ), 175 | 176 | SizedBox(height: 10.0,), 177 | ListView( 178 | primary: false, 179 | shrinkWrap: true, 180 | children: [ 181 | 182 | SizedBox( 183 | height: 30, 184 | ), 185 | 186 | CircleAvatar( 187 | radius: 70, 188 | backgroundColor: Constants.kPrimaryColor.withOpacity(0.6), 189 | child: Icon(Icons.check, color: Colors.white, size: 60,), 190 | 191 | ), 192 | SizedBox(height: 30.0,), 193 | Center( 194 | child: Text( 195 | 'Success', 196 | style: TextStyle( 197 | color: Constants.kPrimaryColor.withOpacity(0.5), 198 | fontFamily: 'Quando', 199 | fontSize: 28.0, 200 | fontWeight: FontWeight.w700), 201 | ), 202 | ), 203 | 204 | 205 | SizedBox( 206 | height: 40, 207 | ), 208 | Center( 209 | child: Text( 210 | "Result Uploaded successfully", 211 | style: TextStyle( 212 | fontSize: 16.0, 213 | fontFamily: 'Quando', 214 | color: Colors.black54, 215 | fontWeight: FontWeight.w500 216 | ), 217 | ), 218 | ), 219 | SizedBox( 220 | height: 30, 221 | ), 222 | 223 | SizedBox( 224 | height: 50, 225 | ), 226 | Row( 227 | mainAxisAlignment: MainAxisAlignment.center, 228 | children: [ 229 | Container( 230 | height: 50, 231 | width: MediaQuery.of(context).size.width*0.45, 232 | child: Padding( 233 | padding: const EdgeInsets.only(left: 10.0, right: 10.0), 234 | child: FlatButton( 235 | color: Colors.white, 236 | child: Text( 237 | 'Dashboard', 238 | style: TextStyle(fontSize: 14), 239 | ), 240 | shape: OutlineInputBorder( 241 | borderSide: BorderSide(color: Constants.kPrimaryColor.withOpacity(0.6), width: 2), 242 | borderRadius: BorderRadius.circular(5), 243 | ), 244 | padding: EdgeInsets.all(18), 245 | textColor: Constants.kPrimaryColor.withOpacity(0.9), 246 | onPressed: () { 247 | Navigator.pushAndRemoveUntil(context, MaterialPageRoute(builder: (context) => AdminBottomNav()), (Route route) => false); 248 | }, 249 | ), 250 | ), 251 | ), 252 | SizedBox(width: 0.0,), 253 | Container( 254 | height: 50, 255 | width: MediaQuery.of(context).size.width*0.45, 256 | child: Padding( 257 | padding: const EdgeInsets.only(left: 10.0, right: 10.0), 258 | child: FlatButton( 259 | color: Colors.white, 260 | child: Text( 261 | 'Previous', 262 | style: TextStyle(fontSize: 14), 263 | ), 264 | shape: OutlineInputBorder( 265 | borderSide: BorderSide(color: Constants.kPrimaryColor.withOpacity(0.6), width: 2), 266 | borderRadius: BorderRadius.circular(5), 267 | ), 268 | padding: EdgeInsets.all(18), 269 | textColor: Constants.kPrimaryColor.withOpacity(0.9), 270 | onPressed: () { 271 | 272 | Navigator.pushReplacement((context), MaterialPageRoute(builder: (context) => AddMultiStudent())); 273 | }, 274 | ), 275 | ), 276 | ), 277 | ], 278 | ), 279 | ], 280 | ), 281 | ], 282 | ), 283 | ), 284 | ), 285 | ); 286 | } 287 | } 288 | 289 | -------------------------------------------------------------------------------- /lib/screens/student/notificationView.dart: -------------------------------------------------------------------------------- 1 | 2 | import 'package:result/util/constants.dart'; 3 | import 'package:result/widgets/users_widget.dart'; 4 | import 'package:flutter/material.dart'; 5 | 6 | 7 | 8 | class AnnouncementView extends StatefulWidget { 9 | AnnouncementView({this.data}); 10 | final List data; 11 | 12 | @override 13 | _AnnouncementViewState createState() => _AnnouncementViewState(); 14 | } 15 | 16 | class _AnnouncementViewState extends State { 17 | 18 | 19 | var result; 20 | @override 21 | void initState() { 22 | super.initState(); 23 | } 24 | 25 | @override 26 | Widget build(BuildContext context) { 27 | return Scaffold( 28 | appBar: exAppBar(title: "", context: context), 29 | body: Container( 30 | color: Constants.kPrimaryColor.withOpacity(0.03), 31 | padding: EdgeInsets.fromLTRB(10.0, 5.0, 10.0, 5.0), 32 | height: MediaQuery.of(context).size.height, 33 | width: MediaQuery.of(context).size.width, 34 | child: SingleChildScrollView( 35 | child: Column( 36 | crossAxisAlignment: CrossAxisAlignment.start, 37 | children: [ 38 | SizedBox( 39 | height: 20, 40 | ), 41 | Padding( 42 | padding: const EdgeInsets.only(left: 20.0), 43 | child: Text( 44 | 'Message', 45 | style: TextStyle( 46 | color: Colors.black, 47 | fontFamily: 'Quando', 48 | fontSize: 24.0, 49 | fontWeight: FontWeight.w700), 50 | ), 51 | ), 52 | SizedBox(height: 40.0,), 53 | ListView( 54 | primary: false, 55 | shrinkWrap: true, 56 | children: [ 57 | SizedBox( 58 | height: 10, 59 | ), 60 | Padding( 61 | padding: const EdgeInsets.only(left: 20.0, top: 5.0), 62 | child: Text( 63 | widget.data[0]['title'], 64 | style: TextStyle(fontSize: 16, color: Colors.black87, fontWeight: FontWeight.w600), 65 | ), 66 | ), 67 | 68 | Divider( 69 | height: 10.0, 70 | ), 71 | // Padding( 72 | // padding: const EdgeInsets.only(left: 20.0, right: 10.0), 73 | // child: TextFormField( 74 | // validator: (val) => val.length == 0 ? 'Enter title' : null, 75 | // style: TextStyle(fontSize: 12, color: Colors.black, fontFamily: 'Raleway',), 76 | // decoration: InputDecoration( 77 | // hintText: widget.data[0]['post'], 78 | // contentPadding: const EdgeInsets.all(15.0), 79 | // filled: true, 80 | // focusedBorder: OutlineInputBorder( 81 | // borderSide: BorderSide.none, 82 | // ), 83 | // enabledBorder: OutlineInputBorder( 84 | // borderSide: BorderSide.none, 85 | // ), 86 | // ), 87 | // ), 88 | // ), 89 | SizedBox( 90 | height: 20.0, 91 | ), 92 | Padding( 93 | padding: const EdgeInsets.only(left: 20.0, top: 5.0), 94 | child: Text( 95 | "Post ", 96 | style: TextStyle(fontSize: 12, color: Colors.black87, fontWeight: FontWeight.w600), 97 | ), 98 | ), 99 | SizedBox( 100 | height: 10.0, 101 | ), 102 | Padding( 103 | padding: const EdgeInsets.only(left: 20.0, right: 10.0), 104 | child: Container( 105 | padding: EdgeInsets.all(8.0), 106 | decoration: BoxDecoration( 107 | borderRadius: BorderRadius.circular(3), 108 | color: Colors.grey[300] 109 | ), 110 | child: Text( 111 | widget.data[0]['post'], 112 | style: TextStyle(fontSize: 14, color: Colors.black, fontWeight: FontWeight.w500), 113 | ), 114 | ), 115 | ), 116 | 117 | 118 | ], 119 | ), 120 | ], 121 | ), 122 | ), 123 | ), 124 | ); 125 | } 126 | } 127 | 128 | 129 | 130 | -------------------------------------------------------------------------------- /lib/screens/student/notifications.dart: -------------------------------------------------------------------------------- 1 | import 'dart:async'; 2 | import 'dart:convert'; 3 | import 'dart:io'; 4 | 5 | import 'package:result/screens/student/notificationView.dart'; 6 | import 'package:result/util/constants.dart'; 7 | import 'package:result/widgets/users_widget.dart'; 8 | import 'package:flutter/material.dart'; 9 | import 'package:flutter_spinkit/flutter_spinkit.dart'; 10 | import 'package:http/http.dart' as http; 11 | import 'package:path_provider/path_provider.dart'; 12 | 13 | List postList = []; 14 | 15 | 16 | class GetNotifications extends StatefulWidget { 17 | 18 | @override 19 | _GetNotificationsState createState() => _GetNotificationsState(); 20 | } 21 | 22 | class _GetNotificationsState extends State { 23 | 24 | 25 | var spinkit = SpinKitThreeBounce( 26 | color: Constants.kPrimaryColor.withOpacity(0.8), 27 | size: 30.0, 28 | ); 29 | 30 | Future fetchAnnouncement() async { 31 | final response = 32 | await http.post("https://teamcoded.com.ng/result.php", body: { 33 | "request": "FETCH ALL ANNOUNCEMENT", 34 | }); 35 | setState(() { 36 | var convertDateToJson = jsonDecode(response.body); 37 | postList = convertDateToJson; 38 | }); 39 | return postList; 40 | } 41 | 42 | 43 | @override 44 | void initState() { 45 | fetchAnnouncement(); 46 | super.initState(); 47 | } 48 | 49 | @override 50 | Widget build(BuildContext context) { 51 | return FutureBuilder( 52 | future: fetchAnnouncement(), 53 | builder: (BuildContext context, AsyncSnapshot
snapshot){ 54 | List myData = (snapshot.data); 55 | if (myData == null) { 56 | return Scaffold( 57 | body: Column( 58 | crossAxisAlignment: CrossAxisAlignment.center, 59 | mainAxisAlignment: MainAxisAlignment.center, 60 | children: [ 61 | Container( 62 | child: spinkit, 63 | ), 64 | SizedBox(height: 10,), 65 | Center( 66 | child: Text( 67 | 'Loading...' 68 | ), 69 | ), 70 | ], 71 | ), 72 | ); 73 | } else { 74 | return myData.isNotEmpty 75 | ? 76 | Notifications() 77 | : 78 | Scaffold( 79 | body: Column( 80 | crossAxisAlignment: CrossAxisAlignment.center, 81 | mainAxisAlignment: MainAxisAlignment.center, 82 | children: [ 83 | Container( 84 | child: Icon(Icons.warning, size: 50, color: Colors.orange[400]), 85 | ), 86 | SizedBox(height: 15,), 87 | Center( 88 | child: Text( 89 | 'No Available Notification' 90 | ), 91 | ), 92 | ], 93 | ), 94 | ); 95 | } 96 | }, 97 | ); 98 | } 99 | } 100 | 101 | 102 | 103 | 104 | class Notifications extends StatefulWidget { 105 | @override 106 | _NotificationsState createState() => _NotificationsState(); 107 | } 108 | 109 | class _NotificationsState extends State
{ 110 | 111 | Future fetchAnnouncement() async { 112 | String fileName = "postData1.json"; 113 | var dir = await getTemporaryDirectory(); 114 | File file = new File(dir.path + "/" + fileName); 115 | 116 | if (file.existsSync()) { 117 | var jsonData = file.readAsStringSync(); 118 | setState(() { 119 | postList = json.decode(jsonData); 120 | }); 121 | final response = 122 | await http.post("https://teamcoded.com.ng/result.php", body: { 123 | "request": "FETCH ALL ANNOUNCEMENT", 124 | }); 125 | setState(() { 126 | var convertDateToJson = jsonDecode(response.body); 127 | postList = convertDateToJson; 128 | file.writeAsStringSync(response.body, flush: true, mode: FileMode.write); 129 | 130 | }); 131 | return postList; 132 | }else{ 133 | final response = 134 | await http.post("https://teamcoded.com.ng/elearning.php", body: { 135 | "request": "FETCH ALL ANNOUNCEMENT", 136 | }); 137 | setState(() { 138 | var convertDateToJson = jsonDecode(response.body); 139 | postList = convertDateToJson; 140 | file.writeAsStringSync(response.body, flush: true, mode: FileMode.write); 141 | 142 | }); 143 | return postList; 144 | } 145 | } 146 | 147 | 148 | @override 149 | void initState() { 150 | fetchAnnouncement(); 151 | super.initState(); 152 | } 153 | 154 | 155 | @override 156 | Widget build(BuildContext context) { 157 | return Scaffold( 158 | appBar: exAppBar(title: " ", context: context), 159 | body: Container( 160 | color: Constants.kPrimaryColor.withOpacity(0.03), 161 | padding: EdgeInsets.fromLTRB(10.0, 5.0, 10.0, 5.0), 162 | height: MediaQuery.of(context).size.height, 163 | width: MediaQuery.of(context).size.width, 164 | child: Column( 165 | crossAxisAlignment: CrossAxisAlignment.start, 166 | children: [ 167 | SizedBox( 168 | height: 20, 169 | ), 170 | Padding( 171 | padding: const EdgeInsets.only(left: 20.0), 172 | child: Text( 173 | 'Notifications', 174 | style: TextStyle( 175 | color: Colors.black, 176 | fontFamily: 'Quando', 177 | fontSize: 24.0, 178 | fontWeight: FontWeight.w700), 179 | ), 180 | ), 181 | 182 | Container( 183 | height: MediaQuery.of(context).size.height*0.7, 184 | child: postList != null ? ListView.builder( 185 | shrinkWrap: true, 186 | itemCount: postList == null ? 0 : postList.length, 187 | itemBuilder: (BuildContext context, int index) { 188 | return tile( 189 | context, 190 | postList[index]['title'][0], 191 | postList[index]['title'], 192 | postList[index]['post'], 193 | int.parse(postList[index]['announcement_id']), 194 | (){ 195 | Navigator.of(context).push(MaterialPageRoute(builder: (context)=>AnnouncementView(data: postList.where((element) => element['announcement_id'] == postList[index]['announcement_id']).toList(),))); 196 | } 197 | ); 198 | } 199 | 200 | 201 | ) : Container( 202 | height: MediaQuery.of(context).size.height*0.7, 203 | width: MediaQuery.of(context).size.width, 204 | child: Center( 205 | child: Row( 206 | mainAxisAlignment: MainAxisAlignment.center, 207 | children: [ 208 | Icon(Icons.info_outline, color: Colors.black54,), 209 | SizedBox(height: 5.0,), 210 | Text( 211 | 'You do not have notifications', 212 | style: TextStyle( 213 | color: Colors.black54, 214 | fontFamily: 'raleway', 215 | fontSize: 18,), 216 | textAlign: TextAlign.center, 217 | ), 218 | ], 219 | ), 220 | ), 221 | ),) 222 | ], 223 | ), 224 | ), 225 | ); 226 | } 227 | } 228 | 229 | 230 | 231 | tile(context, String char, String heading, String post, int id, Function route){ 232 | return Column( 233 | children: [ 234 | Container( 235 | // color: Color(0Xffffffff), 236 | width: MediaQuery.of(context).size.width, 237 | 238 | child: Card( 239 | child: InkWell( 240 | highlightColor: Constants.kPrimaryColor.withOpacity(0.2), 241 | splashColor: Colors.teal, 242 | onTap: route, 243 | child: Row( 244 | mainAxisAlignment: MainAxisAlignment.spaceBetween, 245 | children: [ 246 | Flexible( 247 | child: Row( 248 | crossAxisAlignment: CrossAxisAlignment.start, 249 | mainAxisAlignment: MainAxisAlignment.start, 250 | children: [ 251 | Padding( 252 | padding: const EdgeInsets.only(left: 8.0, top: 10.0), 253 | child: CircleAvatar( 254 | radius: 25, 255 | backgroundColor: id.isOdd ? Colors.teal : Color(0XFF657ED4), 256 | child: Text(char), 257 | ), 258 | ), 259 | SizedBox( 260 | width: 10.0, 261 | ), 262 | Flexible( 263 | child: Padding( 264 | padding: const EdgeInsets.only(top:10.0), 265 | child: Column( 266 | crossAxisAlignment: CrossAxisAlignment.start, 267 | children: [ 268 | Text( 269 | heading, 270 | overflow: TextOverflow.ellipsis, 271 | style: TextStyle( 272 | fontSize: 14.0, 273 | fontFamily: 'Quando', 274 | color: Colors.black, 275 | fontWeight: FontWeight.w600 276 | ), 277 | 278 | ), 279 | 280 | SizedBox( height: 5.0,), 281 | Text( 282 | post, 283 | style: TextStyle( 284 | fontSize: 12.0, 285 | color: Colors.black54, 286 | ), 287 | overflow: TextOverflow.ellipsis, 288 | ), 289 | SizedBox( height: 25.0,), 290 | 291 | ], 292 | ), 293 | ), 294 | ), 295 | 296 | SizedBox( 297 | height: 5.0, 298 | ), 299 | 300 | ], 301 | ), 302 | ), 303 | 304 | ], 305 | ), 306 | ), 307 | ), 308 | ), 309 | SizedBox(height: 5.0,), 310 | ], 311 | ); 312 | } 313 | -------------------------------------------------------------------------------- /lib/screens/student/resultView.dart: -------------------------------------------------------------------------------- 1 | import 'package:result/widgets/users_widget.dart'; 2 | import 'package:flutter/material.dart'; 3 | import 'dart:async'; 4 | 5 | import 'package:flutter_plugin_pdf_viewer/flutter_plugin_pdf_viewer.dart'; 6 | 7 | class ResutView extends StatefulWidget { 8 | ResutView({this.selectedSemester, this.regno}); 9 | final selectedSemester; 10 | final String regno; 11 | @override 12 | _ResutViewState createState() => _ResutViewState(); 13 | } 14 | 15 | class _ResutViewState extends State
{ 16 | 17 | 18 | PDFDocument document; 19 | bool loading = true; 20 | 21 | _loadPdf() async { 22 | document = 23 | await PDFDocument.fromURL("https://teamcoded.com.ng/my_result.php?regno=${widget.regno}&&semester=${widget.selectedSemester}"); 24 | 25 | Timer(Duration(seconds: 2), () { 26 | setState(() { 27 | loading = false; 28 | }); 29 | }); 30 | } 31 | 32 | @override 33 | void initState() { 34 | _loadPdf(); 35 | super.initState(); 36 | } 37 | 38 | 39 | @override 40 | Widget build(BuildContext context) { 41 | return Scaffold( 42 | appBar: singleAppBar(title: " ${widget.selectedSemester} RESULT", context: context), 43 | body: loading 44 | ? Center( 45 | child: CircularProgressIndicator(), 46 | ) : 47 | PDFViewer( 48 | document: document, 49 | ), 50 | ); 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /lib/screens/student/studentAccount.dart: -------------------------------------------------------------------------------- 1 | import 'package:result/home/home.dart'; 2 | import 'package:result/screens/student/notifications.dart'; 3 | import 'package:result/screens/student/studentDashboard.dart'; 4 | import 'package:result/util/constants.dart'; 5 | import 'package:result/widgets/users_widget.dart'; 6 | import 'package:flutter/material.dart'; 7 | import 'package:font_awesome_flutter/font_awesome_flutter.dart'; 8 | 9 | class StudentAccount extends StatefulWidget { 10 | @override 11 | _StudentAccountState createState() => _StudentAccountState(); 12 | } 13 | 14 | class _StudentAccountState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return Scaffold( 18 | appBar: singleAppBar(title: " ", context: context), 19 | body: Container( 20 | color: Constants.kPrimaryColor.withOpacity(0.03), 21 | padding: EdgeInsets.fromLTRB(10.0, 5.0, 10.0, 5.0), 22 | height: MediaQuery.of(context).size.height, 23 | width: MediaQuery.of(context).size.width, 24 | child: Column( 25 | crossAxisAlignment: CrossAxisAlignment.start, 26 | children: [ 27 | SizedBox( 28 | height: 20, 29 | ), 30 | Padding( 31 | padding: const EdgeInsets.only(left: 20.0), 32 | child: Text( 33 | 'My Account', 34 | style: TextStyle( 35 | color: Colors.black54, 36 | fontFamily: 'Quando', 37 | fontSize: 24.0, 38 | fontWeight: FontWeight.w700), 39 | ), 40 | ), 41 | SizedBox(height: 30.0,), 42 | Container( 43 | height: MediaQuery.of(context).size.height * 0.22, 44 | width: MediaQuery.of(context).size.width, 45 | child: Card( 46 | child: InkWell( 47 | 48 | child: Column( 49 | crossAxisAlignment: CrossAxisAlignment.center, 50 | mainAxisAlignment: MainAxisAlignment.center, 51 | children: [ 52 | Image.asset('img/nacossLogo.png',), 53 | ], 54 | ), 55 | ), 56 | ), 57 | ), 58 | SizedBox(height: 15.0,), 59 | myMenu( 60 | icon1: FontAwesomeIcons.bookOpen, 61 | title: "My Courses", 62 | icon2: Icons.arrow_forward_ios, 63 | route: () { 64 | Navigator.pushReplacement(context, MaterialPageRoute(builder: (context) => BottomNav())); 65 | } 66 | ), 67 | myMenu( 68 | icon1: FontAwesomeIcons.bell, 69 | title: "Notifications", 70 | icon2: Icons.arrow_forward_ios, 71 | route: () { 72 | Navigator.push(context, MaterialPageRoute(builder: (context) => GetNotifications())); 73 | } 74 | ), 75 | myMenu( 76 | icon1: FontAwesomeIcons.signOutAlt, 77 | title: "Log Out", 78 | icon2: Icons.arrow_forward_ios, 79 | route: () { 80 | Navigator.pushReplacement(context, MaterialPageRoute(builder: (context) => Home())); 81 | } 82 | ), 83 | ], 84 | ), 85 | ), 86 | ); 87 | } 88 | } 89 | 90 | myMenu({Function route, IconData icon1, String title, IconData icon2}){ 91 | return Column( 92 | children: [ 93 | Container( 94 | height: 50.0, 95 | color: Colors.white, 96 | child: InkWell( 97 | onTap: route, 98 | child:Container( 99 | padding: EdgeInsets.fromLTRB(15.0, 5.0, 15.0, 5.0), 100 | child: Row( 101 | mainAxisAlignment: MainAxisAlignment.spaceBetween, 102 | children: [ 103 | Row( 104 | children: [ 105 | Icon(icon1, color: Colors.black87, size: 20.0,), 106 | SizedBox(width: 20.0), 107 | Text( 108 | title, 109 | style: TextStyle(fontSize: 16.0, color: Colors.black87, fontFamily: 'SourceSerifPro' ), 110 | ), 111 | ], 112 | ), 113 | Icon(icon2, color: Colors.black87, size: 15,), 114 | ], 115 | ), 116 | ) 117 | ) 118 | ), 119 | SizedBox(height: 10.0,), 120 | ], 121 | ); 122 | } -------------------------------------------------------------------------------- /lib/screens/student/studentProfile.dart: -------------------------------------------------------------------------------- 1 | 2 | import 'package:flutter/material.dart'; 3 | import 'package:result/util/constants.dart'; 4 | import 'package:font_awesome_flutter/font_awesome_flutter.dart'; 5 | 6 | 7 | 8 | String name; 9 | String regno; 10 | 11 | class StudentProfile extends StatefulWidget { 12 | @override 13 | _StudentProfileState createState() => _StudentProfileState(); 14 | } 15 | 16 | class _StudentProfileState extends State { 17 | 18 | 19 | getData() { 20 | setState(() { 21 | name = Constants.sharedPref.getString("name"); 22 | regno = Constants.sharedPref.getString("regno"); 23 | }); 24 | } 25 | 26 | @override 27 | void initState() { 28 | getData(); 29 | super.initState(); 30 | } 31 | 32 | 33 | @override 34 | Widget build(BuildContext context) { 35 | return Scaffold( 36 | backgroundColor: Color(0xffDAE0E2), 37 | // appBar: AppBar( 38 | // elevation: 0, 39 | // backgroundColor: Color(0xff218F76), 40 | // title: Text( 41 | // '' 42 | // ), 43 | // ), 44 | body: Stack( 45 | fit: StackFit.expand, 46 | children: [ 47 | Column( 48 | children: [ 49 | Container( 50 | width: double.infinity, 51 | height: 200, 52 | decoration: BoxDecoration( 53 | gradient: LinearGradient( 54 | colors: [ 55 | Constants.kPrimaryColor.withOpacity(0.8), 56 | Constants.kPrimaryColor.withOpacity(0.3), 57 | ], 58 | begin: Alignment.centerLeft, 59 | end: new Alignment(1.0, 1.0), 60 | ), 61 | // borderRadius: BorderRadius.only(bottomLeft: Radius.circular(150), bottomRight: Radius.circular(150)), 62 | ), 63 | child: Column( 64 | crossAxisAlignment: CrossAxisAlignment.center, 65 | mainAxisAlignment: MainAxisAlignment.center, 66 | children: [ 67 | 68 | // Text( 69 | // 'Adam Musa Ya\'u', 70 | // style: TextStyle(fontSize: 22, fontWeight: FontWeight.w800, color: Colors.white70,fontFamily: 'Alike'), 71 | // ) 72 | ], 73 | ), 74 | ) 75 | ], 76 | ), 77 | 78 | Positioned( 79 | top: 130, 80 | left: 110, 81 | child: Column( 82 | crossAxisAlignment: CrossAxisAlignment.center, 83 | mainAxisAlignment: MainAxisAlignment.center, 84 | children: [ 85 | CircleAvatar( 86 | backgroundImage: AssetImage('img/user-icon.jpg'), 87 | radius: 70, 88 | ) 89 | ], 90 | ), 91 | ), 92 | 93 | Positioned( 94 | top: 290, 95 | left: 0, 96 | right: 0, 97 | child: Column( 98 | crossAxisAlignment: CrossAxisAlignment.stretch, 99 | mainAxisAlignment: MainAxisAlignment.center, 100 | children: [ 101 | Container( 102 | decoration: BoxDecoration( 103 | ), 104 | child: Column( 105 | mainAxisAlignment: MainAxisAlignment.start, 106 | crossAxisAlignment: CrossAxisAlignment.start, 107 | children: [ 108 | Row( 109 | children: [ 110 | Container( 111 | width: 80, 112 | child: Padding( 113 | padding: const EdgeInsets.all(10.0), 114 | child: Icon(FontAwesomeIcons.userAlt), 115 | ), 116 | ), 117 | 118 | Container( 119 | child: Padding( 120 | padding: const EdgeInsets.all(10.0), 121 | child: Text(name, style: TextStyle(fontSize: 16, color: Colors.black54, fontWeight: FontWeight.w800,fontFamily: 'Alike'),), 122 | ), 123 | ), 124 | ], 125 | ), 126 | Divider(height: 20,), 127 | 128 | Row( 129 | children: [ 130 | Container( 131 | width: 80, 132 | child: Padding( 133 | padding: const EdgeInsets.all(10.0), 134 | child: Icon(FontAwesomeIcons.school), 135 | ), 136 | ), 137 | 138 | Container( 139 | child: Padding( 140 | padding: const EdgeInsets.all(10.0), 141 | child: Text("Kaduna Polytechnic", style: TextStyle(fontSize: 16, color: Colors.black54, fontWeight: FontWeight.w800,fontFamily: 'Alike'),), 142 | ), 143 | ), 144 | ], 145 | ), 146 | Divider(height: 20,), 147 | 148 | Row( 149 | children: [ 150 | Container( 151 | width: 80, 152 | child: Padding( 153 | padding: const EdgeInsets.all(10.0), 154 | child: Icon(FontAwesomeIcons.tag 155 | ), 156 | ), 157 | ), 158 | 159 | Container( 160 | child: Padding( 161 | padding: const EdgeInsets.all(10.0), 162 | child: Text("Student", style: TextStyle(fontSize: 16, color: Colors.black54, fontWeight: FontWeight.w800,fontFamily: 'Alike'),), 163 | ), 164 | ), 165 | ], 166 | ), 167 | Divider(height: 20,), 168 | 169 | Row( 170 | children: [ 171 | Container( 172 | width: 80, 173 | child: Padding( 174 | padding: const EdgeInsets.all(10.0), 175 | child: Icon(FontAwesomeIcons.mobile), 176 | ), 177 | ), 178 | 179 | Container( 180 | child: Padding( 181 | padding: const EdgeInsets.all(10.0), 182 | child: Text('080XXXXXXXX', style: TextStyle(fontSize: 16, color: Colors.black54, fontWeight: FontWeight.w800,fontFamily: 'Alike'),), 183 | ), 184 | ), 185 | ], 186 | ), 187 | Divider(height: 20,), 188 | 189 | 190 | Row( 191 | children: [ 192 | Container( 193 | width: 80, 194 | child: Padding( 195 | padding: const EdgeInsets.all(10.0), 196 | child: Icon(FontAwesomeIcons.mailBulk), 197 | ), 198 | ), 199 | 200 | Container( 201 | child: Padding( 202 | padding: const EdgeInsets.all(10.0), 203 | child: Text("info@kadunapolytechnic.com", style: TextStyle(fontSize: 16, color: Colors.black54, fontWeight: FontWeight.w800,fontFamily: 'Alike'),), 204 | ), 205 | ), 206 | ], 207 | ), 208 | Divider(height: 10,), 209 | 210 | Column( 211 | crossAxisAlignment: CrossAxisAlignment.stretch, 212 | children: [ 213 | Container( 214 | child: Center( 215 | child: RaisedButton( 216 | 217 | color: Constants.kPrimaryColor.withOpacity(0.8), 218 | child: Text("Update Profile", style: TextStyle(fontSize: 16, color: Colors.white, fontWeight: FontWeight.w800,fontFamily: 'Alike'),), 219 | onPressed: () { 220 | 221 | }, 222 | ), 223 | ), 224 | ) 225 | ], 226 | ) 227 | ], 228 | ), 229 | ) 230 | ], 231 | ), 232 | ) 233 | ], 234 | ), 235 | ); 236 | } 237 | } -------------------------------------------------------------------------------- /lib/util/constants.dart: -------------------------------------------------------------------------------- 1 | import 'dart:convert'; 2 | import 'dart:async'; 3 | import 'dart:typed_data'; 4 | import 'package:flutter/cupertino.dart'; 5 | import 'package:shared_preferences/shared_preferences.dart'; 6 | class Constants{ 7 | static SharedPreferences sharedPref; 8 | static const kTextColor = Color(0XFF1E2432); 9 | static const kMediumTextColor = Color(0XFF53627C); 10 | static const kLightColor = Color(0XFFACB1C0); 11 | static const kPrimaryColor = Color(0XFF003049); 12 | static const kBackgroundColor = Color(0XFFFCFCFC); 13 | 14 | 15 | 16 | 17 | 18 | 19 | static Future saveImageToSharedPref(String value) async { 20 | 21 | sharedPref = await SharedPreferences.getInstance(); 22 | return sharedPref.setString("key", value); 23 | } 24 | 25 | 26 | 27 | static Future getImageFromPref() async { 28 | 29 | sharedPref = await SharedPreferences.getInstance(); 30 | return sharedPref.getString("key"); 31 | } 32 | 33 | 34 | static String base64Sring(Uint8List data) { 35 | 36 | return base64Encode(data); 37 | } 38 | 39 | 40 | static Image imageFromBase64String(String base64String) { 41 | 42 | return Image.memory( 43 | 44 | base64Decode(base64String), 45 | fit: BoxFit.fill, 46 | ); 47 | } 48 | 49 | 50 | 51 | } 52 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /pubspec.yaml: -------------------------------------------------------------------------------- 1 | name: result 2 | description: A new Flutter project. 3 | 4 | # The following line prevents the package from being accidentally published to 5 | # pub.dev using `pub publish`. This is preferred for private packages. 6 | publish_to: 'none' # Remove this line if you wish to publish to pub.dev 7 | 8 | # The following defines the version and build number for your application. 9 | # A version number is three numbers separated by dots, like 1.2.43 10 | # followed by an optional build number separated by a +. 11 | # Both the version and the builder number may be overridden in flutter 12 | # build by specifying --build-name and --build-number, respectively. 13 | # In Android, build-name is used as versionName while build-number used as versionCode. 14 | # Read more about Android versioning at https://developer.android.com/studio/publish/versioning 15 | # In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion. 16 | # Read more about iOS versioning at 17 | # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html 18 | version: 1.0.0+1 19 | 20 | environment: 21 | sdk: ">=2.7.0 <3.0.0" 22 | 23 | dependencies: 24 | flutter: 25 | sdk: flutter 26 | flutter_polyline_points: ^0.1.0 27 | flutter_launcher_icons: ^0.8.0 28 | flutter_launcher_name: ^0.0.1 29 | flutter_plugin_pdf_viewer: ^1.0.7 30 | permission_handler: '^4.4.0+hotfix.1' 31 | # ext_storage: ^1.0.3 32 | flutter_svg: 33 | flutter_spinkit: "^4.1.2" 34 | 35 | 36 | 37 | # The following adds the Cupertino Icons font to your application. 38 | # Use with the CupertinoIcons class for iOS style icons. 39 | cupertino_icons: ^0.1.3 40 | path_provider: ^1.6.14 41 | sqflite: ^1.3.1+1 42 | image_picker: ^0.6.7+8 43 | flutter_plugin_android_lifecycle: ^1.0.9 44 | date_time_picker: ^1.0.1 45 | geolocator: ^5.3.1 46 | location: 47 | simple_animations: ^2.2.2 48 | toast: ^0.1.5 49 | path: 50 | dio: 51 | gx_file_picker: ^1.9.0+2 52 | 53 | dev_dependencies: 54 | flutter_test: 55 | sdk: flutter 56 | http: 57 | font_awesome_flutter: ^8.2.0 58 | shared_preferences: ^0.5.10 59 | provider: ^4.1.3 60 | uuid: ^2.1.0 61 | connectivity: 62 | google_maps_flutter: ^0.5.33 63 | mailer: ^3.2.1 64 | hawk_fab_menu: 65 | 66 | flutter_launcher_name: 67 | name: "Result Processing" 68 | 69 | 70 | flutter_icons: 71 | android: "launcher_icon" 72 | ios: true 73 | image_path: "img/kadpoly.png" 74 | 75 | # For information on the generic Dart part of this file, see the 76 | # following page: https://dart.dev/tools/pub/pubspec 77 | 78 | # The following section is specific to Flutter. 79 | flutter: 80 | 81 | # The following line ensures that the Material Icons font is 82 | # included with your application, so that you can use the icons in 83 | # the material Icons class. 84 | uses-material-design: true 85 | 86 | # To add assets to your application, add an assets section, like this: 87 | assets: 88 | - img/ 89 | 90 | # An image asset can refer to one or more resolution-specific "variants", see 91 | # https://flutter.dev/assets-and-images/#resolution-aware. 92 | 93 | # For details regarding adding assets from package dependencies, see 94 | # https://flutter.dev/assets-and-images/#from-packages 95 | 96 | # To add custom fonts to your application, add a fonts section here, 97 | # in this "flutter" section. Each entry in this list should have a 98 | # "family" key with the font family name, and a "fonts" key with a 99 | # list giving the asset and other descriptors for the font. For 100 | # example: 101 | fonts: 102 | - family: Quando 103 | fonts: 104 | - asset: fonts/Quando.ttf 105 | - family: Satisfy 106 | fonts: 107 | - asset: fonts/Satisfy.ttf 108 | - family: Alike 109 | fonts: 110 | - asset: fonts/Alike-Regular.ttf 111 | - family: Roboto 112 | fonts: 113 | - asset: fonts/Roboto-Regular.ttf 114 | weight: 700 115 | - asset: fonts/Roboto-Bold.ttf 116 | - family: Raleway 117 | fonts: 118 | - asset: fonts/Raleway-Bold.ttf 119 | weight: 700 120 | - asset: fonts/Raleway-Regular.ttf 121 | # 122 | # For details regarding fonts from package dependencies, 123 | # see https://flutter.dev/custom-fonts/#from-packages 124 | -------------------------------------------------------------------------------- /test/widget_test.dart: -------------------------------------------------------------------------------- 1 | // This is a basic Flutter widget test. 2 | // 3 | // To perform an interaction with a widget in your test, use the WidgetTester 4 | // utility that Flutter provides. For example, you can send tap and scroll 5 | // gestures. You can also use WidgetTester to find child widgets in the widget 6 | // tree, read text, and verify that the values of widget properties are correct. 7 | 8 | import 'package:flutter/material.dart'; 9 | import 'package:flutter_test/flutter_test.dart'; 10 | 11 | import 'package:result/main.dart'; 12 | 13 | void main() { 14 | testWidgets('Counter increments smoke test', (WidgetTester tester) async { 15 | // Build our app and trigger a frame. 16 | await tester.pumpWidget(MyApp()); 17 | 18 | // Verify that our counter starts at 0. 19 | expect(find.text('0'), findsOneWidget); 20 | expect(find.text('1'), findsNothing); 21 | 22 | // Tap the '+' icon and trigger a frame. 23 | await tester.tap(find.byIcon(Icons.add)); 24 | await tester.pump(); 25 | 26 | // Verify that our counter has incremented. 27 | expect(find.text('0'), findsNothing); 28 | expect(find.text('1'), findsOneWidget); 29 | }); 30 | } 31 | --------------------------------------------------------------------------------