Browse Source

Update 1206

dienianindya 1 year ago
parent
commit
a53bb13202
100 changed files with 789 additions and 399 deletions
  1. 1
    0
      android/app/build.gradle
  2. BIN
      android/app/src/main/res/IconKitchen-Output/android/play_store_512.png
  3. 6
    0
      android/app/src/main/res/IconKitchen-Output/android/res/mipmap-anydpi-v26/ic_launcher.xml
  4. BIN
      android/app/src/main/res/IconKitchen-Output/android/res/mipmap-hdpi/ic_launcher.png
  5. BIN
      android/app/src/main/res/IconKitchen-Output/android/res/mipmap-hdpi/ic_launcher_background.png
  6. BIN
      android/app/src/main/res/IconKitchen-Output/android/res/mipmap-hdpi/ic_launcher_foreground.png
  7. BIN
      android/app/src/main/res/IconKitchen-Output/android/res/mipmap-hdpi/ic_launcher_monochrome.png
  8. BIN
      android/app/src/main/res/IconKitchen-Output/android/res/mipmap-mdpi/ic_launcher.png
  9. BIN
      android/app/src/main/res/IconKitchen-Output/android/res/mipmap-mdpi/ic_launcher_background.png
  10. BIN
      android/app/src/main/res/IconKitchen-Output/android/res/mipmap-mdpi/ic_launcher_foreground.png
  11. BIN
      android/app/src/main/res/IconKitchen-Output/android/res/mipmap-mdpi/ic_launcher_monochrome.png
  12. BIN
      android/app/src/main/res/IconKitchen-Output/android/res/mipmap-xhdpi/ic_launcher.png
  13. BIN
      android/app/src/main/res/IconKitchen-Output/android/res/mipmap-xhdpi/ic_launcher_background.png
  14. BIN
      android/app/src/main/res/IconKitchen-Output/android/res/mipmap-xhdpi/ic_launcher_foreground.png
  15. BIN
      android/app/src/main/res/IconKitchen-Output/android/res/mipmap-xhdpi/ic_launcher_monochrome.png
  16. BIN
      android/app/src/main/res/IconKitchen-Output/android/res/mipmap-xxhdpi/ic_launcher.png
  17. BIN
      android/app/src/main/res/IconKitchen-Output/android/res/mipmap-xxhdpi/ic_launcher_background.png
  18. BIN
      android/app/src/main/res/IconKitchen-Output/android/res/mipmap-xxhdpi/ic_launcher_foreground.png
  19. BIN
      android/app/src/main/res/IconKitchen-Output/android/res/mipmap-xxhdpi/ic_launcher_monochrome.png
  20. BIN
      android/app/src/main/res/IconKitchen-Output/android/res/mipmap-xxxhdpi/ic_launcher.png
  21. BIN
      android/app/src/main/res/IconKitchen-Output/android/res/mipmap-xxxhdpi/ic_launcher_background.png
  22. BIN
      android/app/src/main/res/IconKitchen-Output/android/res/mipmap-xxxhdpi/ic_launcher_foreground.png
  23. BIN
      android/app/src/main/res/IconKitchen-Output/android/res/mipmap-xxxhdpi/ic_launcher_monochrome.png
  24. BIN
      android/app/src/main/res/IconKitchen-Output/ios/AppIcon-20@2x.png
  25. BIN
      android/app/src/main/res/IconKitchen-Output/ios/AppIcon-20@2x~ipad.png
  26. BIN
      android/app/src/main/res/IconKitchen-Output/ios/AppIcon-20@3x.png
  27. BIN
      android/app/src/main/res/IconKitchen-Output/ios/AppIcon-20~ipad.png
  28. BIN
      android/app/src/main/res/IconKitchen-Output/ios/AppIcon-29.png
  29. BIN
      android/app/src/main/res/IconKitchen-Output/ios/AppIcon-29@2x.png
  30. BIN
      android/app/src/main/res/IconKitchen-Output/ios/AppIcon-29@2x~ipad.png
  31. BIN
      android/app/src/main/res/IconKitchen-Output/ios/AppIcon-29@3x.png
  32. BIN
      android/app/src/main/res/IconKitchen-Output/ios/AppIcon-29~ipad.png
  33. BIN
      android/app/src/main/res/IconKitchen-Output/ios/AppIcon-40@2x.png
  34. BIN
      android/app/src/main/res/IconKitchen-Output/ios/AppIcon-40@2x~ipad.png
  35. BIN
      android/app/src/main/res/IconKitchen-Output/ios/AppIcon-40@3x.png
  36. BIN
      android/app/src/main/res/IconKitchen-Output/ios/AppIcon-40~ipad.png
  37. BIN
      android/app/src/main/res/IconKitchen-Output/ios/AppIcon-60@2x~car.png
  38. BIN
      android/app/src/main/res/IconKitchen-Output/ios/AppIcon-60@3x~car.png
  39. BIN
      android/app/src/main/res/IconKitchen-Output/ios/AppIcon-83.5@2x~ipad.png
  40. BIN
      android/app/src/main/res/IconKitchen-Output/ios/AppIcon@2x.png
  41. BIN
      android/app/src/main/res/IconKitchen-Output/ios/AppIcon@2x~ipad.png
  42. BIN
      android/app/src/main/res/IconKitchen-Output/ios/AppIcon@3x.png
  43. BIN
      android/app/src/main/res/IconKitchen-Output/ios/AppIcon~ios-marketing.png
  44. BIN
      android/app/src/main/res/IconKitchen-Output/ios/AppIcon~ipad.png
  45. 134
    0
      android/app/src/main/res/IconKitchen-Output/ios/Contents.json
  46. 18
    0
      android/app/src/main/res/IconKitchen-Output/web/README.txt
  47. BIN
      android/app/src/main/res/IconKitchen-Output/web/apple-touch-icon.png
  48. BIN
      android/app/src/main/res/IconKitchen-Output/web/favicon.ico
  49. BIN
      android/app/src/main/res/IconKitchen-Output/web/icon-192-maskable.png
  50. BIN
      android/app/src/main/res/IconKitchen-Output/web/icon-192.png
  51. BIN
      android/app/src/main/res/IconKitchen-Output/web/icon-512-maskable.png
  52. BIN
      android/app/src/main/res/IconKitchen-Output/web/icon-512.png
  53. 74
    0
      android/app/src/main/res/drawable/ic_launcher_background.xml
  54. BIN
      android/app/src/main/res/ic_launcher-web.png
  55. 3
    2
      android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
  56. 1
    1
      android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
  57. BIN
      android/app/src/main/res/mipmap-hdpi/ic_launcher.png
  58. BIN
      android/app/src/main/res/mipmap-hdpi/ic_launcher_background.png
  59. BIN
      android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png
  60. BIN
      android/app/src/main/res/mipmap-hdpi/ic_launcher_monochrome.png
  61. BIN
      android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
  62. BIN
      android/app/src/main/res/mipmap-ldpi/ic_launcher.png
  63. BIN
      android/app/src/main/res/mipmap-mdpi/ic_launcher.png
  64. BIN
      android/app/src/main/res/mipmap-mdpi/ic_launcher_background.png
  65. BIN
      android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png
  66. BIN
      android/app/src/main/res/mipmap-mdpi/ic_launcher_monochrome.png
  67. BIN
      android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
  68. BIN
      android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
  69. BIN
      android/app/src/main/res/mipmap-xhdpi/ic_launcher_background.png
  70. BIN
      android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png
  71. BIN
      android/app/src/main/res/mipmap-xhdpi/ic_launcher_monochrome.png
  72. BIN
      android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
  73. BIN
      android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
  74. BIN
      android/app/src/main/res/mipmap-xxhdpi/ic_launcher_background.png
  75. BIN
      android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png
  76. BIN
      android/app/src/main/res/mipmap-xxhdpi/ic_launcher_monochrome.png
  77. BIN
      android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
  78. BIN
      android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
  79. BIN
      android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_background.png
  80. BIN
      android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png
  81. BIN
      android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_monochrome.png
  82. BIN
      android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
  83. BIN
      android/app/src/main/res/playstore-icon.png
  84. 3
    3
      android/build.gradle
  85. 1
    1
      android/gradle/wrapper/gradle-wrapper.properties
  86. BIN
      assets/images/sindi_icon.png
  87. 9
    1
      lib/NotificationService/local_notification_service.dart
  88. 4
    4
      lib/Screens/ForgotPassword/forgotPassword_screen.dart
  89. 1
    1
      lib/Screens/ForgotPassword/resetPassword_post.dart
  90. 151
    50
      lib/Screens/Home/home_screen.dart
  91. 4
    4
      lib/Screens/Login/login_screen.dart
  92. 1
    1
      lib/Screens/Login/post_result_model.dart
  93. 1
    1
      lib/Screens/Menu/Absensi/RequestHttp/checkIn_post.dart
  94. 1
    1
      lib/Screens/Menu/Absensi/RequestHttp/checkOut_post.dart
  95. 1
    1
      lib/Screens/Menu/Absensi/RequestHttp/checkStatus_post.dart
  96. 1
    1
      lib/Screens/Menu/Absensi/RequestHttp/historyAbsensi_post.dart
  97. 137
    29
      lib/Screens/Menu/Absensi/absensi_history_screen.dart
  98. 236
    297
      lib/Screens/Menu/Absensi/absensi_screen.dart
  99. 1
    1
      lib/Screens/Menu/AjukanCuti/RequestHttp/detailCuti_post.dart
  100. 0
    0
      lib/Screens/Menu/AjukanCuti/RequestHttp/historyCuti_post.dart

+ 1
- 0
android/app/build.gradle View File

25
 apply plugin: 'com.android.application'
25
 apply plugin: 'com.android.application'
26
 apply plugin: 'kotlin-android'
26
 apply plugin: 'kotlin-android'
27
 apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
27
 apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
28
+apply plugin: 'com.google.firebase.crashlytics'
28
 
29
 
29
 android {
30
 android {
30
     compileSdkVersion flutter.compileSdkVersion
31
     compileSdkVersion flutter.compileSdkVersion

BIN
android/app/src/main/res/IconKitchen-Output/android/play_store_512.png View File


+ 6
- 0
android/app/src/main/res/IconKitchen-Output/android/res/mipmap-anydpi-v26/ic_launcher.xml View File

1
+<?xml version="1.0" encoding="utf-8"?>
2
+<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
3
+  <background android:drawable="@mipmap/ic_launcher_background"/>
4
+  <foreground android:drawable="@mipmap/ic_launcher_foreground"/>
5
+  <monochrome android:drawable="@mipmap/ic_launcher_monochrome"/>
6
+</adaptive-icon>

BIN
android/app/src/main/res/IconKitchen-Output/android/res/mipmap-hdpi/ic_launcher.png View File


BIN
android/app/src/main/res/IconKitchen-Output/android/res/mipmap-hdpi/ic_launcher_background.png View File


BIN
android/app/src/main/res/IconKitchen-Output/android/res/mipmap-hdpi/ic_launcher_foreground.png View File


BIN
android/app/src/main/res/IconKitchen-Output/android/res/mipmap-hdpi/ic_launcher_monochrome.png View File


BIN
android/app/src/main/res/IconKitchen-Output/android/res/mipmap-mdpi/ic_launcher.png View File


BIN
android/app/src/main/res/IconKitchen-Output/android/res/mipmap-mdpi/ic_launcher_background.png View File


BIN
android/app/src/main/res/IconKitchen-Output/android/res/mipmap-mdpi/ic_launcher_foreground.png View File


BIN
android/app/src/main/res/IconKitchen-Output/android/res/mipmap-mdpi/ic_launcher_monochrome.png View File


BIN
android/app/src/main/res/IconKitchen-Output/android/res/mipmap-xhdpi/ic_launcher.png View File


BIN
android/app/src/main/res/IconKitchen-Output/android/res/mipmap-xhdpi/ic_launcher_background.png View File


BIN
android/app/src/main/res/IconKitchen-Output/android/res/mipmap-xhdpi/ic_launcher_foreground.png View File


BIN
android/app/src/main/res/IconKitchen-Output/android/res/mipmap-xhdpi/ic_launcher_monochrome.png View File


BIN
android/app/src/main/res/IconKitchen-Output/android/res/mipmap-xxhdpi/ic_launcher.png View File


BIN
android/app/src/main/res/IconKitchen-Output/android/res/mipmap-xxhdpi/ic_launcher_background.png View File


BIN
android/app/src/main/res/IconKitchen-Output/android/res/mipmap-xxhdpi/ic_launcher_foreground.png View File


BIN
android/app/src/main/res/IconKitchen-Output/android/res/mipmap-xxhdpi/ic_launcher_monochrome.png View File


BIN
android/app/src/main/res/IconKitchen-Output/android/res/mipmap-xxxhdpi/ic_launcher.png View File


BIN
android/app/src/main/res/IconKitchen-Output/android/res/mipmap-xxxhdpi/ic_launcher_background.png View File


BIN
android/app/src/main/res/IconKitchen-Output/android/res/mipmap-xxxhdpi/ic_launcher_foreground.png View File


BIN
android/app/src/main/res/IconKitchen-Output/android/res/mipmap-xxxhdpi/ic_launcher_monochrome.png View File


BIN
android/app/src/main/res/IconKitchen-Output/ios/AppIcon-20@2x.png View File


BIN
android/app/src/main/res/IconKitchen-Output/ios/AppIcon-20@2x~ipad.png View File


BIN
android/app/src/main/res/IconKitchen-Output/ios/AppIcon-20@3x.png View File


BIN
android/app/src/main/res/IconKitchen-Output/ios/AppIcon-20~ipad.png View File


BIN
android/app/src/main/res/IconKitchen-Output/ios/AppIcon-29.png View File


BIN
android/app/src/main/res/IconKitchen-Output/ios/AppIcon-29@2x.png View File


BIN
android/app/src/main/res/IconKitchen-Output/ios/AppIcon-29@2x~ipad.png View File


BIN
android/app/src/main/res/IconKitchen-Output/ios/AppIcon-29@3x.png View File


BIN
android/app/src/main/res/IconKitchen-Output/ios/AppIcon-29~ipad.png View File


BIN
android/app/src/main/res/IconKitchen-Output/ios/AppIcon-40@2x.png View File


BIN
android/app/src/main/res/IconKitchen-Output/ios/AppIcon-40@2x~ipad.png View File


BIN
android/app/src/main/res/IconKitchen-Output/ios/AppIcon-40@3x.png View File


BIN
android/app/src/main/res/IconKitchen-Output/ios/AppIcon-40~ipad.png View File


BIN
android/app/src/main/res/IconKitchen-Output/ios/AppIcon-60@2x~car.png View File


BIN
android/app/src/main/res/IconKitchen-Output/ios/AppIcon-60@3x~car.png View File


BIN
android/app/src/main/res/IconKitchen-Output/ios/AppIcon-83.5@2x~ipad.png View File


BIN
android/app/src/main/res/IconKitchen-Output/ios/AppIcon@2x.png View File


BIN
android/app/src/main/res/IconKitchen-Output/ios/AppIcon@2x~ipad.png View File


BIN
android/app/src/main/res/IconKitchen-Output/ios/AppIcon@3x.png View File


BIN
android/app/src/main/res/IconKitchen-Output/ios/AppIcon~ios-marketing.png View File


BIN
android/app/src/main/res/IconKitchen-Output/ios/AppIcon~ipad.png View File


+ 134
- 0
android/app/src/main/res/IconKitchen-Output/ios/Contents.json View File

1
+{
2
+  "images": [
3
+    {
4
+      "filename": "AppIcon@2x.png",
5
+      "idiom": "iphone",
6
+      "scale": "2x",
7
+      "size": "60x60"
8
+    },
9
+    {
10
+      "filename": "AppIcon@3x.png",
11
+      "idiom": "iphone",
12
+      "scale": "3x",
13
+      "size": "60x60"
14
+    },
15
+    {
16
+      "filename": "AppIcon~ipad.png",
17
+      "idiom": "ipad",
18
+      "scale": "1x",
19
+      "size": "76x76"
20
+    },
21
+    {
22
+      "filename": "AppIcon@2x~ipad.png",
23
+      "idiom": "ipad",
24
+      "scale": "2x",
25
+      "size": "76x76"
26
+    },
27
+    {
28
+      "filename": "AppIcon-83.5@2x~ipad.png",
29
+      "idiom": "ipad",
30
+      "scale": "2x",
31
+      "size": "83.5x83.5"
32
+    },
33
+    {
34
+      "filename": "AppIcon-40@2x.png",
35
+      "idiom": "iphone",
36
+      "scale": "2x",
37
+      "size": "40x40"
38
+    },
39
+    {
40
+      "filename": "AppIcon-40@3x.png",
41
+      "idiom": "iphone",
42
+      "scale": "3x",
43
+      "size": "40x40"
44
+    },
45
+    {
46
+      "filename": "AppIcon-40~ipad.png",
47
+      "idiom": "ipad",
48
+      "scale": "1x",
49
+      "size": "40x40"
50
+    },
51
+    {
52
+      "filename": "AppIcon-40@2x~ipad.png",
53
+      "idiom": "ipad",
54
+      "scale": "2x",
55
+      "size": "40x40"
56
+    },
57
+    {
58
+      "filename": "AppIcon-20@2x.png",
59
+      "idiom": "iphone",
60
+      "scale": "2x",
61
+      "size": "20x20"
62
+    },
63
+    {
64
+      "filename": "AppIcon-20@3x.png",
65
+      "idiom": "iphone",
66
+      "scale": "3x",
67
+      "size": "20x20"
68
+    },
69
+    {
70
+      "filename": "AppIcon-20~ipad.png",
71
+      "idiom": "ipad",
72
+      "scale": "1x",
73
+      "size": "20x20"
74
+    },
75
+    {
76
+      "filename": "AppIcon-20@2x~ipad.png",
77
+      "idiom": "ipad",
78
+      "scale": "2x",
79
+      "size": "20x20"
80
+    },
81
+    {
82
+      "filename": "AppIcon-29.png",
83
+      "idiom": "iphone",
84
+      "scale": "1x",
85
+      "size": "29x29"
86
+    },
87
+    {
88
+      "filename": "AppIcon-29@2x.png",
89
+      "idiom": "iphone",
90
+      "scale": "2x",
91
+      "size": "29x29"
92
+    },
93
+    {
94
+      "filename": "AppIcon-29@3x.png",
95
+      "idiom": "iphone",
96
+      "scale": "3x",
97
+      "size": "29x29"
98
+    },
99
+    {
100
+      "filename": "AppIcon-29~ipad.png",
101
+      "idiom": "ipad",
102
+      "scale": "1x",
103
+      "size": "29x29"
104
+    },
105
+    {
106
+      "filename": "AppIcon-29@2x~ipad.png",
107
+      "idiom": "ipad",
108
+      "scale": "2x",
109
+      "size": "29x29"
110
+    },
111
+    {
112
+      "filename": "AppIcon-60@2x~car.png",
113
+      "idiom": "car",
114
+      "scale": "2x",
115
+      "size": "60x60"
116
+    },
117
+    {
118
+      "filename": "AppIcon-60@3x~car.png",
119
+      "idiom": "car",
120
+      "scale": "3x",
121
+      "size": "60x60"
122
+    },
123
+    {
124
+      "filename": "AppIcon~ios-marketing.png",
125
+      "idiom": "ios-marketing",
126
+      "scale": "1x",
127
+      "size": "1024x1024"
128
+    }
129
+  ],
130
+  "info": {
131
+    "author": "iconkitchen",
132
+    "version": 1
133
+  }
134
+}

+ 18
- 0
android/app/src/main/res/IconKitchen-Output/web/README.txt View File

1
+Add this to your HTML <head>:
2
+
3
+    <link rel="icon" href="/favicon.ico" sizes="any">
4
+    <link rel="apple-touch-icon" href="/apple-touch-icon.png">
5
+
6
+Add this to your app's manifest.json:
7
+
8
+    ...
9
+    {
10
+      "icons": [
11
+        { "src": "/favicon.ico", "type": "image/x-icon", "sizes": "16x16 32x32" },
12
+        { "src": "/icon-192.png", "type": "image/png", "sizes": "192x192" },
13
+        { "src": "/icon-512.png", "type": "image/png", "sizes": "512x512" },
14
+        { "src": "/icon-192-maskable.png", "type": "image/png", "sizes": "192x192", "purpose": "maskable" },
15
+        { "src": "/icon-512-maskable.png", "type": "image/png", "sizes": "512x512", "purpose": "maskable" }
16
+      ]
17
+    }
18
+    ...

BIN
android/app/src/main/res/IconKitchen-Output/web/apple-touch-icon.png View File


BIN
android/app/src/main/res/IconKitchen-Output/web/favicon.ico View File


BIN
android/app/src/main/res/IconKitchen-Output/web/icon-192-maskable.png View File


BIN
android/app/src/main/res/IconKitchen-Output/web/icon-192.png View File


BIN
android/app/src/main/res/IconKitchen-Output/web/icon-512-maskable.png View File


BIN
android/app/src/main/res/IconKitchen-Output/web/icon-512.png View File


+ 74
- 0
android/app/src/main/res/drawable/ic_launcher_background.xml View File

1
+<?xml version="1.0" encoding="utf-8"?>
2
+<vector
3
+    android:height="108dp"
4
+    android:width="108dp"
5
+    android:viewportHeight="108"
6
+    android:viewportWidth="108"
7
+    xmlns:android="http://schemas.android.com/apk/res/android">
8
+    <path android:fillColor="#000"
9
+          android:pathData="M0,0h108v108h-108z"/>
10
+    <path android:fillColor="#00000000" android:pathData="M9,0L9,108"
11
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
12
+    <path android:fillColor="#00000000" android:pathData="M19,0L19,108"
13
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
14
+    <path android:fillColor="#00000000" android:pathData="M29,0L29,108"
15
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
16
+    <path android:fillColor="#00000000" android:pathData="M39,0L39,108"
17
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
18
+    <path android:fillColor="#00000000" android:pathData="M49,0L49,108"
19
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
20
+    <path android:fillColor="#00000000" android:pathData="M59,0L59,108"
21
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
22
+    <path android:fillColor="#00000000" android:pathData="M69,0L69,108"
23
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
24
+    <path android:fillColor="#00000000" android:pathData="M79,0L79,108"
25
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
26
+    <path android:fillColor="#00000000" android:pathData="M89,0L89,108"
27
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
28
+    <path android:fillColor="#00000000" android:pathData="M99,0L99,108"
29
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
30
+    <path android:fillColor="#00000000" android:pathData="M0,9L108,9"
31
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
32
+    <path android:fillColor="#00000000" android:pathData="M0,19L108,19"
33
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
34
+    <path android:fillColor="#00000000" android:pathData="M0,29L108,29"
35
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
36
+    <path android:fillColor="#00000000" android:pathData="M0,39L108,39"
37
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
38
+    <path android:fillColor="#00000000" android:pathData="M0,49L108,49"
39
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
40
+    <path android:fillColor="#00000000" android:pathData="M0,59L108,59"
41
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
42
+    <path android:fillColor="#00000000" android:pathData="M0,69L108,69"
43
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
44
+    <path android:fillColor="#00000000" android:pathData="M0,79L108,79"
45
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
46
+    <path android:fillColor="#00000000" android:pathData="M0,89L108,89"
47
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
48
+    <path android:fillColor="#00000000" android:pathData="M0,99L108,99"
49
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
50
+    <path android:fillColor="#00000000" android:pathData="M19,29L89,29"
51
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
52
+    <path android:fillColor="#00000000" android:pathData="M19,39L89,39"
53
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
54
+    <path android:fillColor="#00000000" android:pathData="M19,49L89,49"
55
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
56
+    <path android:fillColor="#00000000" android:pathData="M19,59L89,59"
57
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
58
+    <path android:fillColor="#00000000" android:pathData="M19,69L89,69"
59
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
60
+    <path android:fillColor="#00000000" android:pathData="M19,79L89,79"
61
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
62
+    <path android:fillColor="#00000000" android:pathData="M29,19L29,89"
63
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
64
+    <path android:fillColor="#00000000" android:pathData="M39,19L39,89"
65
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
66
+    <path android:fillColor="#00000000" android:pathData="M49,19L49,89"
67
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
68
+    <path android:fillColor="#00000000" android:pathData="M59,19L59,89"
69
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
70
+    <path android:fillColor="#00000000" android:pathData="M69,19L69,89"
71
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
72
+    <path android:fillColor="#00000000" android:pathData="M79,19L79,89"
73
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
74
+</vector>

BIN
android/app/src/main/res/ic_launcher-web.png View File


+ 3
- 2
android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml View File

1
 <?xml version="1.0" encoding="utf-8"?>
1
 <?xml version="1.0" encoding="utf-8"?>
2
 <adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
2
 <adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
3
-    <background android:drawable="@color/ic_launcher_background"/>
4
-    <foreground android:drawable="@mipmap/ic_launcher_foreground"/>
3
+  <background android:drawable="@mipmap/ic_launcher_background"/>
4
+  <foreground android:drawable="@mipmap/ic_launcher_foreground"/>
5
+  <monochrome android:drawable="@mipmap/ic_launcher_monochrome"/>
5
 </adaptive-icon>
6
 </adaptive-icon>

+ 1
- 1
android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml View File

1
 <?xml version="1.0" encoding="utf-8"?>
1
 <?xml version="1.0" encoding="utf-8"?>
2
 <adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
2
 <adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
3
-    <background android:drawable="@color/ic_launcher_background"/>
3
+    <background android:drawable="@drawable/ic_launcher_background"/>
4
     <foreground android:drawable="@mipmap/ic_launcher_foreground"/>
4
     <foreground android:drawable="@mipmap/ic_launcher_foreground"/>
5
 </adaptive-icon>
5
 </adaptive-icon>

BIN
android/app/src/main/res/mipmap-hdpi/ic_launcher.png View File


BIN
android/app/src/main/res/mipmap-hdpi/ic_launcher_background.png View File


BIN
android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png View File


BIN
android/app/src/main/res/mipmap-hdpi/ic_launcher_monochrome.png View File


BIN
android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png View File


BIN
android/app/src/main/res/mipmap-ldpi/ic_launcher.png View File


BIN
android/app/src/main/res/mipmap-mdpi/ic_launcher.png View File


BIN
android/app/src/main/res/mipmap-mdpi/ic_launcher_background.png View File


BIN
android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png View File


BIN
android/app/src/main/res/mipmap-mdpi/ic_launcher_monochrome.png View File


BIN
android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png View File


BIN
android/app/src/main/res/mipmap-xhdpi/ic_launcher.png View File


BIN
android/app/src/main/res/mipmap-xhdpi/ic_launcher_background.png View File


BIN
android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png View File


BIN
android/app/src/main/res/mipmap-xhdpi/ic_launcher_monochrome.png View File


BIN
android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png View File


BIN
android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png View File


BIN
android/app/src/main/res/mipmap-xxhdpi/ic_launcher_background.png View File


BIN
android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png View File


BIN
android/app/src/main/res/mipmap-xxhdpi/ic_launcher_monochrome.png View File


BIN
android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png View File


BIN
android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png View File


BIN
android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_background.png View File


BIN
android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png View File


BIN
android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_monochrome.png View File


BIN
android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png View File


BIN
android/app/src/main/res/playstore-icon.png View File


+ 3
- 3
android/build.gradle View File

9
         classpath 'com.android.tools.build:gradle:7.1.3'
9
         classpath 'com.android.tools.build:gradle:7.1.3'
10
         classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
10
         classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
11
         classpath 'com.google.gms:google-services:4.3.15'
11
         classpath 'com.google.gms:google-services:4.3.15'
12
-
12
+        classpath 'com.google.firebase:firebase-crashlytics-gradle:2.9.5'
13
     }
13
     }
14
 }
14
 }
15
 
15
 
28
     project.evaluationDependsOn(':app')
28
     project.evaluationDependsOn(':app')
29
 }
29
 }
30
 
30
 
31
-task clean(type: Delete) {
31
+tasks.register("clean", Delete) {
32
     delete rootProject.buildDir
32
     delete rootProject.buildDir
33
-}
33
+}

+ 1
- 1
android/gradle/wrapper/gradle-wrapper.properties View File

2
 distributionPath=wrapper/dists
2
 distributionPath=wrapper/dists
3
 zipStoreBase=GRADLE_USER_HOME
3
 zipStoreBase=GRADLE_USER_HOME
4
 zipStorePath=wrapper/dists
4
 zipStorePath=wrapper/dists
5
-distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-all.zip
5
+distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-all.zip

BIN
assets/images/sindi_icon.png View File


+ 9
- 1
lib/NotificationService/local_notification_service.dart View File

21
 
21
 
22
       },
22
       },
23
     );
23
     );
24
+    _notificationsPlugin.initialize(initializationSettings, onDidReceiveBackgroundNotificationResponse:  (details) {
25
+      print("onSelectNotification-Background");
26
+      var context;
27
+      Navigator.push(context as BuildContext, MaterialPageRoute(
28
+          builder: (context) => SettingsScreen()));
29
+    },);
24
   }
30
   }
25
 
31
 
26
   static void createanddisplaynotification(RemoteMessage message) async {
32
   static void createanddisplaynotification(RemoteMessage message) async {
30
         android: AndroidNotificationDetails(
36
         android: AndroidNotificationDetails(
31
           "pushnotificationapp",
37
           "pushnotificationapp",
32
           "pushnotificationappchannel",
38
           "pushnotificationappchannel",
33
-          icon: "@mipmap/ic_launcher",
39
+          //icon: "@mipmap/ic_launcher",
40
+          largeIcon: DrawableResourceAndroidBitmap('assets/images/sindi_icon.png'),
41
+          enableVibration: true,
34
           importance: Importance.max,
42
           importance: Importance.max,
35
           priority: Priority.high,
43
           priority: Priority.high,
36
         ),
44
         ),

+ 4
- 4
lib/Screens/ForgotPassword/forgotPassword_screen.dart View File

3
 import 'package:flutter/material.dart';
3
 import 'package:flutter/material.dart';
4
 import 'package:fluttertoast/fluttertoast.dart';
4
 import 'package:fluttertoast/fluttertoast.dart';
5
 import 'package:google_fonts/google_fonts.dart';
5
 import 'package:google_fonts/google_fonts.dart';
6
-import 'package:hris_selfservice_mobile/Screens/ForgotPassword/resetPassword_post.dart';
7
-import 'package:hris_selfservice_mobile/Screens/Login/background.dart';
8
-import 'package:hris_selfservice_mobile/Screens/Login/inputWidget.dart';
9
-import 'package:hris_selfservice_mobile/Screens/Login/login_screen.dart';
6
+import 'package:employee_selfservice_mobile/Screens/ForgotPassword/resetPassword_post.dart';
7
+import 'package:employee_selfservice_mobile/Screens/Login/background.dart';
8
+import 'package:employee_selfservice_mobile/Screens/Login/inputWidget.dart';
9
+import 'package:employee_selfservice_mobile/Screens/Login/login_screen.dart';
10
 import 'package:progress_dialog_null_safe/progress_dialog_null_safe.dart';
10
 import 'package:progress_dialog_null_safe/progress_dialog_null_safe.dart';
11
 
11
 
12
 class ForgotPasswordView extends StatefulWidget {
12
 class ForgotPasswordView extends StatefulWidget {

+ 1
- 1
lib/Screens/ForgotPassword/resetPassword_post.dart View File

1
 import 'dart:convert';
1
 import 'dart:convert';
2
 import 'dart:core';
2
 import 'dart:core';
3
 import 'package:http/http.dart' as http;
3
 import 'package:http/http.dart' as http;
4
-import 'package:hris_selfservice_mobile/constants.dart';
4
+import 'package:employee_selfservice_mobile/constants.dart';
5
 import 'dart:developer' as developer;
5
 import 'dart:developer' as developer;
6
 
6
 
7
 class ResetPassword_Post {
7
 class ResetPassword_Post {

+ 151
- 50
lib/Screens/Home/home_screen.dart View File

9
 import 'package:fluttertoast/fluttertoast.dart';
9
 import 'package:fluttertoast/fluttertoast.dart';
10
 import 'package:focus_detector/focus_detector.dart';
10
 import 'package:focus_detector/focus_detector.dart';
11
 import 'package:google_fonts/google_fonts.dart';
11
 import 'package:google_fonts/google_fonts.dart';
12
-import 'package:hris_selfservice_mobile/Screens/Menu/About/about_screen.dart';
13
-import 'package:hris_selfservice_mobile/Screens/Menu/Absensi/absensi_screen.dart';
14
-import 'package:hris_selfservice_mobile/Screens/Menu/AjukanCuti/ajukancuti_screen.dart';
15
-import 'package:hris_selfservice_mobile/Screens/Menu/Reimburse/reimburse_screen.dart';
16
-import 'package:hris_selfservice_mobile/Screens/Menu/SlipGaji/slipgaji_screen.dart';
17
-import 'package:hris_selfservice_mobile/Screens/Menu/SuratTugas/surattugas_screen.dart';
18
-import 'package:hris_selfservice_mobile/Screens/Settings/settings_screen.dart';
12
+import 'package:employee_selfservice_mobile/Screens/Menu/About/about_screen.dart';
13
+import 'package:employee_selfservice_mobile/Screens/Menu/Absensi/absensi_screen.dart';
14
+import 'package:employee_selfservice_mobile/Screens/Menu/AjukanCuti/ajukancuti_screen.dart';
15
+import 'package:employee_selfservice_mobile/Screens/Menu/Reimburse/reimburse_screen.dart';
16
+import 'package:employee_selfservice_mobile/Screens/Menu/SlipGaji/slipgaji_screen.dart';
17
+import 'package:employee_selfservice_mobile/Screens/Menu/SuratTugas/surattugas_screen.dart';
18
+import 'package:employee_selfservice_mobile/Screens/Settings/settings_screen.dart';
19
 import 'package:lottie/lottie.dart';
19
 import 'package:lottie/lottie.dart';
20
 import 'package:progress_dialog_null_safe/progress_dialog_null_safe.dart';
20
 import 'package:progress_dialog_null_safe/progress_dialog_null_safe.dart';
21
 import 'package:shared_preferences/shared_preferences.dart';
21
 import 'package:shared_preferences/shared_preferences.dart';
186
     });
186
     });
187
   }
187
   }
188
 
188
 
189
+  int _selectedIndex = 0;
190
+  void _onItemTapped(int index) {
191
+    setState(() {
192
+      _selectedIndex = index;
193
+      if (index == 0) {
194
+
195
+      }
196
+    });
197
+  }
198
+
189
   @override
199
   @override
190
   Widget build(BuildContext context) {
200
   Widget build(BuildContext context) {
191
     return MaterialApp(
201
     return MaterialApp(
205
             body: Stack(
215
             body: Stack(
206
               children: <Widget>[
216
               children: <Widget>[
207
                 //Background(),
217
                 //Background(),
208
-                HomeScreen(),
218
+                //HomeScreen(),
219
+                BottomNavBar()
209
               ],
220
               ],
210
             )),
221
             )),
211
       ),
222
       ),
247
   );
258
   );
248
 }
259
 }
249
 
260
 
261
+class BottomNavBar extends StatefulWidget {
262
+  const BottomNavBar({Key? key}) : super(key: key);
263
+
264
+  @override
265
+  State<BottomNavBar> createState() => _BottomNavBarState();
266
+}
267
+
268
+class _BottomNavBarState extends State<BottomNavBar> {
269
+  List<Widget> _widgetOptions = <Widget>[
270
+    HomeScreen(),
271
+    ReimburseScreen(),
272
+    SettingsScreen(),
273
+  ];
274
+
275
+  int _selectedIndex = 0;
276
+  void _onItemTapped(int index) {
277
+    setState(() {
278
+      _selectedIndex = index;
279
+    });
280
+  }
281
+  @override
282
+  Widget build(BuildContext context) {
283
+    return Scaffold(
284
+      body: _widgetOptions.elementAt(_selectedIndex),
285
+      bottomNavigationBar: BottomNavigationBar(
286
+            items: const <BottomNavigationBarItem>[
287
+              BottomNavigationBarItem(
288
+                icon: Icon(Icons.home),
289
+                label: 'Home',
290
+              ),
291
+              BottomNavigationBarItem(
292
+                icon: Icon(Icons.notifications),
293
+                label: 'Notification',
294
+              ),BottomNavigationBarItem(
295
+                icon: Icon(Icons.person),
296
+                label: 'Profile',
297
+              ),
298
+            ],
299
+            currentIndex: _selectedIndex,
300
+            selectedItemColor: Colors.white,
301
+            backgroundColor: Color(0xFF5666b7),
302
+            onTap: _onItemTapped),
303
+      );
304
+  }
305
+}
306
+
307
+
250
 class HomeScreen extends StatefulWidget {
308
 class HomeScreen extends StatefulWidget {
251
   @override
309
   @override
252
   State<HomeScreen> createState() => _HomeScreenState();
310
   State<HomeScreen> createState() => _HomeScreenState();
345
                     padding: EdgeInsets.all(20),
403
                     padding: EdgeInsets.all(20),
346
                     child: Column(
404
                     child: Column(
347
                       children: <Widget>[
405
                       children: <Widget>[
348
-                        Align(
406
+                       /* Align(
349
                           alignment: Alignment.topRight,
407
                           alignment: Alignment.topRight,
350
                           child: InkWell(
408
                           child: InkWell(
351
                             child: Container(
409
                             child: Container(
360
                                       builder: (context) => SettingsScreen()));
418
                                       builder: (context) => SettingsScreen()));
361
                             },
419
                             },
362
                           ),
420
                           ),
363
-                        ),
421
+                        ),*/
364
                         Container(
422
                         Container(
365
                           child:  Stack(
423
                           child:  Stack(
366
                             alignment: Alignment.topLeft,
424
                             alignment: Alignment.topLeft,
367
                             children: [
425
                             children: [
368
                               Container(
426
                               Container(
369
-                                margin: EdgeInsets.only(top: ((size.width - 20) * 0.33) * 0.5),
427
+                                margin: EdgeInsets.only(top: (((size.width - 20) * 0.33) * 0.5) + 40),
370
                                 child: Card(
428
                                 child: Card(
371
                                   elevation: 15,
429
                                   elevation: 15,
372
                                   child: Container(
430
                                   child: Container(
402
                               Align(
460
                               Align(
403
                                 alignment: Alignment.topCenter,
461
                                 alignment: Alignment.topCenter,
404
                                 child: Container(
462
                                 child: Container(
405
-                                  margin: EdgeInsets.only(left: 15),
463
+                                  margin: EdgeInsets.only(left: 15, top: 40),
406
                                   alignment: Alignment.topLeft,
464
                                   alignment: Alignment.topLeft,
407
                                   height: (size.width - 20) * 0.33,
465
                                   height: (size.width - 20) * 0.33,
408
                                   width: (size.width - 20) * 0.33,
466
                                   width: (size.width - 20) * 0.33,
410
                                     color: Colors.black,
468
                                     color: Colors.black,
411
                                     image: DecorationImage(
469
                                     image: DecorationImage(
412
                                       image: _imageToShow,
470
                                       image: _imageToShow,
413
-                                      fit: BoxFit.fill,
471
+                                      fit: BoxFit.cover,
414
                                     ),
472
                                     ),
415
                                     shape: BoxShape.circle,
473
                                     shape: BoxShape.circle,
416
                                   ),
474
                                   ),
522
                                       margin: EdgeInsets.only(top: 10),
580
                                       margin: EdgeInsets.only(top: 10),
523
                                       padding: EdgeInsets.all(5),
581
                                       padding: EdgeInsets.all(5),
524
                                       child: Text(
582
                                       child: Text(
525
-                                        'Time Off Submission',
583
+                                        'Leaves',
526
                                         textAlign: TextAlign.center,
584
                                         textAlign: TextAlign.center,
527
                                         style: GoogleFonts.acme(
585
                                         style: GoogleFonts.acme(
528
                                             fontSize: 18, color: Colors.black),
586
                                             fontSize: 18, color: Colors.black),
538
                                         builder: (context) => AjukanCutiScreen()));
596
                                         builder: (context) => AjukanCutiScreen()));
539
                               },
597
                               },
540
                             ),
598
                             ),
541
-                            /*InkWell(
542
-                        child: Container(
543
-                          decoration: BoxDecoration(
544
-                              color: Color(0xFFD0D0D0),
545
-                              borderRadius: BorderRadius.circular(5)),
546
-                          child: Column(
547
-                            crossAxisAlignment: CrossAxisAlignment.center,
548
-                            mainAxisAlignment: MainAxisAlignment.center,
549
-                            children: <Widget>[
550
-                              Container(
551
-                                width: 75,
552
-                                height: 75,
553
-                                child: Image.asset(
554
-                                    "assets/icons/menu/ic_menu_berita2.png"),
555
-                              ),
556
-                              Container(
557
-                                margin: EdgeInsets.only(top: 10),
558
-                                padding: EdgeInsets.all(5),
559
-                                child: Text(
560
-                                  'Berita',
561
-                                  textAlign: TextAlign.center,
562
-                                  style: GoogleFonts.acme(
563
-                                      fontSize: 18, color: Colors.black),
564
-                                ),
565
-                              ),
566
-                            ],
567
-                          ),
568
-                        ),
569
-                        onTap: () {
570
-                          Navigator.push(
571
-                              context,
572
-                              MaterialPageRoute(
573
-                                  builder: (context) => BeritaScreen()));
574
-                        },
575
-                      ),*/
576
                             InkWell(
599
                             InkWell(
577
                               child: Container(
600
                               child: Container(
578
                                 decoration: BoxDecoration(
601
                                 decoration: BoxDecoration(
685
                                         builder: (context) => AboutScreen()));
708
                                         builder: (context) => AboutScreen()));
686
                               },
709
                               },
687
                             ),
710
                             ),
711
+                            /*InkWell(
712
+                              child: Container(
713
+                                decoration: BoxDecoration(
714
+                                    color: Color(0xFFD0D0D0),
715
+                                    borderRadius: BorderRadius.circular(5)),
716
+                                child: Column(
717
+                                  crossAxisAlignment: CrossAxisAlignment.center,
718
+                                  mainAxisAlignment: MainAxisAlignment.center,
719
+                                  children: <Widget>[
720
+                                    Container(
721
+                                      width: 70,
722
+                                      height: 70,
723
+                                      child: Image.asset(
724
+                                          "assets/icons/menu/ic_reimburse.png",
725
+                                          fit: BoxFit.fill,
726
+                                          alignment: Alignment.center),
727
+                                    ),
728
+                                    Container(
729
+                                      margin: EdgeInsets.only(top: 10),
730
+                                      padding: EdgeInsets.all(5),
731
+                                      child: Text(
732
+                                        'Reimburse',
733
+                                        textAlign: TextAlign.center,
734
+                                        style: GoogleFonts.acme(
735
+                                            fontSize: 18, color: Colors.black),
736
+                                      ),
737
+                                    ),
738
+                                  ],
739
+                                ),
740
+                              ),
741
+                              onTap: () {
742
+                                Navigator.push(
743
+                                    context,
744
+                                    MaterialPageRoute(
745
+                                        builder: (context) => ReimburseScreen()));
746
+                              },
747
+                            ),
748
+                            InkWell(
749
+                              child: Container(
750
+                                decoration: BoxDecoration(
751
+                                    color: Color(0xFFD0D0D0),
752
+                                    borderRadius: BorderRadius.circular(5)),
753
+                                child: Column(
754
+                                  crossAxisAlignment: CrossAxisAlignment.center,
755
+                                  mainAxisAlignment: MainAxisAlignment.center,
756
+                                  children: <Widget>[
757
+                                    Container(
758
+                                      width: 70,
759
+                                      height: 70,
760
+                                      child: Image.asset(
761
+                                          "assets/icons/menu/ic_about_3.png",
762
+                                          fit: BoxFit.fill,
763
+                                          alignment: Alignment.center),
764
+                                    ),
765
+                                    Container(
766
+                                      margin: EdgeInsets.only(top: 10),
767
+                                      padding: EdgeInsets.all(5),
768
+                                      child: Text(
769
+                                        'About',
770
+                                        textAlign: TextAlign.center,
771
+                                        style: GoogleFonts.acme(
772
+                                            fontSize: 18, color: Colors.black),
773
+                                      ),
774
+                                    ),
775
+                                  ],
776
+                                ),
777
+                              ),
778
+                              onTap: () {
779
+                                Navigator.push(
780
+                                    context,
781
+                                    MaterialPageRoute(
782
+                                        builder: (context) => AboutScreen()));
783
+                              },
784
+                            ),*/
688
                           ],
785
                           ],
689
                         )
786
                         )
690
                       ],
787
                       ],
691
                     ),
788
                     ),
692
                   ),
789
                   ),
693
                 ),
790
                 ),
791
+                /*Center(
792
+                  child: _widgetOptions.elementAt(_selectedIndex),
793
+                )*/
694
               ],
794
               ],
695
             ),
795
             ),
696
-          )),
796
+          )
797
+      ),
697
     );
798
     );
698
   }
799
   }
699
 }
800
 }

+ 4
- 4
lib/Screens/Login/login_screen.dart View File

7
 import 'package:flutter_udid/flutter_udid.dart';
7
 import 'package:flutter_udid/flutter_udid.dart';
8
 import 'package:fluttertoast/fluttertoast.dart';
8
 import 'package:fluttertoast/fluttertoast.dart';
9
 import 'package:google_fonts/google_fonts.dart';
9
 import 'package:google_fonts/google_fonts.dart';
10
-import 'package:hris_selfservice_mobile/Screens/ForgotPassword/forgotPassword_screen.dart';
11
-import 'package:hris_selfservice_mobile/Screens/Login/background.dart';
12
-import 'package:hris_selfservice_mobile/Screens/Login/post_result_model.dart';
13
-import 'package:hris_selfservice_mobile/Screens/Splash/splash_screen.dart';
10
+import 'package:employee_selfservice_mobile/Screens/ForgotPassword/forgotPassword_screen.dart';
11
+import 'package:employee_selfservice_mobile/Screens/Login/background.dart';
12
+import 'package:employee_selfservice_mobile/Screens/Login/post_result_model.dart';
13
+import 'package:employee_selfservice_mobile/Screens/Splash/splash_screen.dart';
14
 import 'package:progress_dialog_null_safe/progress_dialog_null_safe.dart';
14
 import 'package:progress_dialog_null_safe/progress_dialog_null_safe.dart';
15
 import 'package:shared_preferences/shared_preferences.dart';
15
 import 'package:shared_preferences/shared_preferences.dart';
16
 import '../../firebase_options.dart';
16
 import '../../firebase_options.dart';

+ 1
- 1
lib/Screens/Login/post_result_model.dart View File

2
 import 'dart:core';
2
 import 'dart:core';
3
 import 'dart:io' show Platform;
3
 import 'dart:io' show Platform;
4
 import 'package:http/http.dart' as http;
4
 import 'package:http/http.dart' as http;
5
-import 'package:hris_selfservice_mobile/constants.dart';
5
+import 'package:employee_selfservice_mobile/constants.dart';
6
 import 'dart:developer' as developer;
6
 import 'dart:developer' as developer;
7
 
7
 
8
 late String platformDevice;
8
 late String platformDevice;

+ 1
- 1
lib/Screens/Menu/Absensi/RequestHttp/checkIn_post.dart View File

1
 import 'dart:convert';
1
 import 'dart:convert';
2
 import 'dart:core';
2
 import 'dart:core';
3
 import 'package:http/http.dart' as http;
3
 import 'package:http/http.dart' as http;
4
-import 'package:hris_selfservice_mobile/constants.dart';
4
+import 'package:employee_selfservice_mobile/constants.dart';
5
 import 'dart:developer' as developer;
5
 import 'dart:developer' as developer;
6
 
6
 
7
 import 'package:shared_preferences/shared_preferences.dart';
7
 import 'package:shared_preferences/shared_preferences.dart';

+ 1
- 1
lib/Screens/Menu/Absensi/RequestHttp/checkOut_post.dart View File

1
 import 'dart:convert';
1
 import 'dart:convert';
2
 import 'dart:core';
2
 import 'dart:core';
3
 import 'package:http/http.dart' as http;
3
 import 'package:http/http.dart' as http;
4
-import 'package:hris_selfservice_mobile/constants.dart';
4
+import 'package:employee_selfservice_mobile/constants.dart';
5
 import 'dart:developer' as developer;
5
 import 'dart:developer' as developer;
6
 
6
 
7
 import 'package:shared_preferences/shared_preferences.dart';
7
 import 'package:shared_preferences/shared_preferences.dart';

+ 1
- 1
lib/Screens/Menu/Absensi/RequestHttp/checkStatus_post.dart View File

1
 import 'dart:convert';
1
 import 'dart:convert';
2
 import 'dart:core';
2
 import 'dart:core';
3
 import 'package:http/http.dart' as http;
3
 import 'package:http/http.dart' as http;
4
-import 'package:hris_selfservice_mobile/constants.dart';
4
+import 'package:employee_selfservice_mobile/constants.dart';
5
 import 'dart:developer' as developer;
5
 import 'dart:developer' as developer;
6
 
6
 
7
 import 'package:shared_preferences/shared_preferences.dart';
7
 import 'package:shared_preferences/shared_preferences.dart';

+ 1
- 1
lib/Screens/Menu/Absensi/RequestHttp/historyAbsensi_post.dart View File

1
 import 'dart:convert';
1
 import 'dart:convert';
2
 import 'dart:core';
2
 import 'dart:core';
3
 import 'package:http/http.dart' as http;
3
 import 'package:http/http.dart' as http;
4
-import 'package:hris_selfservice_mobile/constants.dart';
4
+import 'package:employee_selfservice_mobile/constants.dart';
5
 import 'dart:developer' as developer;
5
 import 'dart:developer' as developer;
6
 
6
 
7
 import 'package:shared_preferences/shared_preferences.dart';
7
 import 'package:shared_preferences/shared_preferences.dart';

+ 137
- 29
lib/Screens/Menu/Absensi/absensi_history_screen.dart View File

1
 import 'dart:convert';
1
 import 'dart:convert';
2
+import 'package:firebase_core/firebase_core.dart';
3
+import 'package:firebase_crashlytics/firebase_crashlytics.dart';
2
 import 'package:flutter/material.dart';
4
 import 'package:flutter/material.dart';
3
 import 'package:google_fonts/google_fonts.dart';
5
 import 'package:google_fonts/google_fonts.dart';
4
-import 'package:hris_selfservice_mobile/constants.dart';
6
+import 'package:employee_selfservice_mobile/constants.dart';
5
 import 'package:intl/intl.dart';
7
 import 'package:intl/intl.dart';
6
 import 'package:progress_dialog_null_safe/progress_dialog_null_safe.dart';
8
 import 'package:progress_dialog_null_safe/progress_dialog_null_safe.dart';
7
 import 'dart:developer' as logDev;
9
 import 'dart:developer' as logDev;
36
   //List Visibility Double Date
38
   //List Visibility Double Date
37
   late List <bool> visibilityDate2;
39
   late List <bool> visibilityDate2;
38
 
40
 
41
+  late List <String> dayDate_list_2;
42
+  late List <String> date_list_2;
43
+  late List <String> month_list_2;
44
+
45
+
39
   @override
46
   @override
40
   initState() {
47
   initState() {
41
     super.initState();
48
     super.initState();
54
     showCheckOut_List = [""];
61
     showCheckOut_List = [""];
55
 
62
 
56
     visibilityDate2 = [false];
63
     visibilityDate2 = [false];
64
+    dayDate_list_2 = [""];
65
+    date_list_2 = [""];
66
+    month_list_2 = [""];
67
+
68
+
69
+    Firebase.initializeApp();
70
+
71
+    //Enable Crashlytics
72
+    FirebaseCrashlytics.instance.setCrashlyticsCollectionEnabled(true);
57
 
73
 
58
     WidgetsBinding.instance.addPostFrameCallback((_) async {
74
     WidgetsBinding.instance.addPostFrameCallback((_) async {
59
       getHistoryData();
75
       getHistoryData();
97
               String check_in = historyAbsensi[i]['check_in'].toString();
113
               String check_in = historyAbsensi[i]['check_in'].toString();
98
               String check_out = historyAbsensi[i]['check_out'].toString();
114
               String check_out = historyAbsensi[i]['check_out'].toString();
99
               String worked_hours = historyAbsensi[i]['worked_hours'].toString();
115
               String worked_hours = historyAbsensi[i]['worked_hours'].toString();
100
-              String coordinate = historyAbsensi[i]['coordinate'].toString();
116
+              //String coordinate = historyAbsensi[i]['coordinate'].toString();
101
 
117
 
102
               double hours = double.parse(worked_hours);
118
               double hours = double.parse(worked_hours);
103
 
119
 
120
+              //Jika Sudah Checkin
104
               if (check_in != "false"){
121
               if (check_in != "false"){
105
                 //Convert UTC to Local Time - Check In Time
122
                 //Convert UTC to Local Time - Check In Time
106
                 DateTime checkInTime = DateFormat("yyyy-MM-dd HH:mm:ss").parse(check_in, true);
123
                 DateTime checkInTime = DateFormat("yyyy-MM-dd HH:mm:ss").parse(check_in, true);
107
                 String showCheckInTime = checkInTime.toLocal().toString().substring(11, 19);
124
                 String showCheckInTime = checkInTime.toLocal().toString().substring(11, 19);
108
                 showCheckIn_List.add(showCheckInTime.substring(0,5));
125
                 showCheckIn_List.add(showCheckInTime.substring(0,5));
126
+                //Jika belum check in
109
               } else if (check_in == "false"){
127
               } else if (check_in == "false"){
110
                 String show_check_in = "-";
128
                 String show_check_in = "-";
111
                 showCheckIn_List.add(show_check_in);
129
                 showCheckIn_List.add(show_check_in);
112
               }
130
               }
113
 
131
 
132
+              //Jika Sudah Checkout
114
               if (check_out != "false"){
133
               if (check_out != "false"){
115
                 //Convert UTC to Local Time - Check Out Time
134
                 //Convert UTC to Local Time - Check Out Time
116
                 DateTime checkOutTime = DateFormat("yyyy-MM-dd HH:mm:ss").parse(check_out, true);
135
                 DateTime checkOutTime = DateFormat("yyyy-MM-dd HH:mm:ss").parse(check_out, true);
117
                 String showCheckOutTime = checkOutTime.toLocal().toString().substring(11, 19);
136
                 String showCheckOutTime = checkOutTime.toLocal().toString().substring(11, 19);
118
                 showCheckOut_List.add(showCheckOutTime.substring(0,5));
137
                 showCheckOut_List.add(showCheckOutTime.substring(0,5));
119
-
138
+                //Jika tanggal check in sama dengan tanggal check out
120
                 if (check_in.substring(0, 10) == check_out.substring(0,10)){
139
                 if (check_in.substring(0, 10) == check_out.substring(0,10)){
121
                   //Get Day Check In
140
                   //Get Day Check In
122
                   String dayDateIn = DateFormat('EEEE').format(DateTime.parse(check_in));
141
                   String dayDateIn = DateFormat('EEEE').format(DateTime.parse(check_in));
125
                   dayDate_List.add(dayDateIn.substring(0,3));
144
                   dayDate_List.add(dayDateIn.substring(0,3));
126
                   date_List.add(dateIn);
145
                   date_List.add(dateIn);
127
                   month_List.add(monthIn);
146
                   month_List.add(monthIn);
147
+
148
+                  dayDate_list_2.add("");
149
+                  date_list_2.add("");
150
+                  month_list_2.add("");
151
+
152
+                  visibilityDate2.add(false);
153
+
154
+                  //Jika tangagal check in tidak sama dengan tanggal checkout
128
                 } else if (check_in.substring(0, 10) != check_out.substring(0,10)){
155
                 } else if (check_in.substring(0, 10) != check_out.substring(0,10)){
129
                   //Get Day Check In & Check Out
156
                   //Get Day Check In & Check Out
130
                   String dayDateIn = DateFormat('EEEE').format(DateTime.parse(check_in));
157
                   String dayDateIn = DateFormat('EEEE').format(DateTime.parse(check_in));
135
                   String dateOut = DateFormat('dd').format(DateTime.parse(check_out));
162
                   String dateOut = DateFormat('dd').format(DateTime.parse(check_out));
136
                   String monthOut = DateFormat('MMM').format(DateTime.parse(check_out));
163
                   String monthOut = DateFormat('MMM').format(DateTime.parse(check_out));
137
 
164
 
138
-                  dayDate_List.add(dayDateIn.substring(0,3) + "\t|\t" + dayDateOut.substring(0,3));
139
-                  date_List.add(dateIn + "\t|\t" + dateOut);
140
-                  month_List.add(monthIn + "\t|\t" + monthOut);
165
+                  dayDate_List.add(dayDateIn.substring(0,3));
166
+                  date_List.add(dateIn);
167
+                  month_List.add(monthIn);
168
+
169
+                  dayDate_list_2.add(dayDateOut.substring(0,3));
170
+                  date_list_2.add(dateOut);
171
+                  month_list_2.add(monthOut);
172
+
173
+                  visibilityDate2.add(true);
141
                 }
174
                 }
175
+                //Jika belum checkout
142
               } else if (check_out == "false"){
176
               } else if (check_out == "false"){
143
                 String show_check_out = "-";
177
                 String show_check_out = "-";
144
                 showCheckOut_List.add(show_check_out);
178
                 showCheckOut_List.add(show_check_out);
149
                 dayDate_List.add(dayDateIn.substring(0,3));
183
                 dayDate_List.add(dayDateIn.substring(0,3));
150
                 date_List.add(dateIn);
184
                 date_List.add(dateIn);
151
                 month_List.add(monthIn);
185
                 month_List.add(monthIn);
186
+
187
+                visibilityDate2.add(false);
188
+
189
+                dayDate_list_2.add("");
190
+                date_list_2.add("");
191
+                month_list_2.add("");
152
               }
192
               }
153
 
193
 
154
-              if (check_in == "true" && check_out == "false"){
194
+              /*if (check_in == "true" && check_out == "false"){
155
                 visibilityDate2.add(false);
195
                 visibilityDate2.add(false);
156
               } else if (check_in == "false" && check_out == "false"){
196
               } else if (check_in == "false" && check_out == "false"){
157
                 visibilityDate2.add(false);
197
                 visibilityDate2.add(false);
158
               } else if (check_in == "true" && check_out == "true"){
198
               } else if (check_in == "true" && check_out == "true"){
159
                 visibilityDate2.add(true);
199
                 visibilityDate2.add(true);
160
-              }
200
+              }*/
161
 
201
 
162
               id_List.add(id);
202
               id_List.add(id);
163
               employee_name_List.add(employee_name);
203
               employee_name_List.add(employee_name);
181
             showCheckOut_List.removeAt(0);
221
             showCheckOut_List.removeAt(0);
182
 
222
 
183
             visibilityDate2.removeAt(0);
223
             visibilityDate2.removeAt(0);
224
+            logDev.log(visibilityDate2.toString(), name: "VISIBILITY DATE");
225
+            dayDate_list_2.removeAt(0);
226
+            date_list_2.removeAt(0);
227
+            month_list_2.removeAt(0);
184
 
228
 
185
             HistoryLength = historyAbsensi.length;
229
             HistoryLength = historyAbsensi.length;
186
           });
230
           });
251
                           child: Row(
295
                           child: Row(
252
                             children: [
296
                             children: [
253
                               Expanded(
297
                               Expanded(
254
-                                  flex: 3,
255
-                                  child:
256
-                                  Container(
257
-                                    alignment: Alignment.center,
258
-                                    padding: EdgeInsets.all(5),
259
-                                    decoration: BoxDecoration(
260
-                                        border: Border.all(color: Colors.black),
261
-                                        borderRadius: BorderRadius.all(Radius.circular(3)),
262
-                                    ),
263
-                                    child: Column(
264
-                                      mainAxisAlignment: MainAxisAlignment.center,
265
-                                      crossAxisAlignment: CrossAxisAlignment.center,
266
-                                      children: [
267
-                                        Text(dayDate_List[i], style: GoogleFonts.fredokaOne(fontSize: 15, color: Colors.blueGrey), textAlign: TextAlign.center,),
268
-                                        Text(date_List[i], style: GoogleFonts.fredokaOne(fontSize: 15, color: Colors.blueGrey), textAlign: TextAlign.center),
269
-                                        Text(month_List[i], style: GoogleFonts.fredokaOne(fontSize: 15, color: Colors.blueGrey), textAlign: TextAlign.center),
270
-                                      ],
271
-                                    )
272
-                                    ,
273
-                                  )
298
+                                flex: 3,
299
+                                child:
300
+                                Container(
301
+                                  alignment: Alignment.center,
302
+                                  padding: EdgeInsets.all(5),
303
+                                  decoration: BoxDecoration(
304
+                                      border: Border.all(color: Colors.black),
305
+                                      borderRadius: BorderRadius.all(Radius.circular(3)),
306
+                                  ),
307
+                                  child: Row(
308
+                                    crossAxisAlignment: CrossAxisAlignment.center,
309
+                                    mainAxisAlignment: MainAxisAlignment.center,
310
+                                    children: [
311
+                                      Column(
312
+                                        children: [
313
+                                          Text(dayDate_List[i], style: GoogleFonts.fredokaOne(fontSize: 15, color: Colors.blueGrey), textAlign: TextAlign.center,),
314
+                                          Text(date_List[i], style: GoogleFonts.fredokaOne(fontSize: 15, color: Colors.blueGrey), textAlign: TextAlign.center),
315
+                                          Text(month_List[i], style: GoogleFonts.fredokaOne(fontSize: 15, color: Colors.blueGrey), textAlign: TextAlign.center),
316
+                                        ],
317
+                                      ),
318
+                                      Visibility(
319
+                                        visible: visibilityDate2[i],
320
+                                        child: Column(
321
+                                          children: [
322
+                                            Text("\t|\t", style: GoogleFonts.fredokaOne(fontSize: 15, color: Colors.blueGrey), textAlign: TextAlign.center,),
323
+                                            Text("\t|\t", style: GoogleFonts.fredokaOne(fontSize: 15, color: Colors.blueGrey), textAlign: TextAlign.center),
324
+                                            Text("\t|\t", style: GoogleFonts.fredokaOne(fontSize: 15, color: Colors.blueGrey), textAlign: TextAlign.center),
325
+                                          ],
326
+                                        ),
327
+                                      ),
328
+                                      Visibility(
329
+                                        visible: visibilityDate2[i],
330
+                                        child: Column(
331
+                                          children: [
332
+                                            Text(dayDate_list_2[i], style: GoogleFonts.fredokaOne(fontSize: 15, color: Colors.blueGrey), textAlign: TextAlign.center,),
333
+                                            Text(date_list_2[i], style: GoogleFonts.fredokaOne(fontSize: 15, color: Colors.blueGrey), textAlign: TextAlign.center),
334
+                                            Text(month_list_2[i], style: GoogleFonts.fredokaOne(fontSize: 15, color: Colors.blueGrey), textAlign: TextAlign.center),
335
+                                          ],
336
+                                        ),
337
+                                      ),
338
+                                      /*Expanded(
339
+                                          flex: 1,
340
+                                          child: Column(
341
+                                          mainAxisAlignment: MainAxisAlignment.center,
342
+                                          crossAxisAlignment: CrossAxisAlignment.center,
343
+                                          children: [
344
+                                            Text(dayDate_List[i], style: GoogleFonts.fredokaOne(fontSize: 15, color: Colors.blueGrey), textAlign: TextAlign.right,),
345
+                                            Text(date_List[i], style: GoogleFonts.fredokaOne(fontSize: 15, color: Colors.blueGrey), textAlign: TextAlign.right),
346
+                                            Text(month_List[i], style: GoogleFonts.fredokaOne(fontSize: 15, color: Colors.blueGrey), textAlign: TextAlign.right),
347
+                                          ],
348
+                                          )
349
+                                      ),
350
+                                      Expanded(
351
+                                          flex: 1,
352
+                                          child: Visibility(
353
+                                            visible: visibilityDate2[i],
354
+                                            child: Column(
355
+                                              children: [
356
+                                                Text("|", style: GoogleFonts.fredokaOne(fontSize: 15, color: Colors.blueGrey), textAlign: TextAlign.center,),
357
+                                                Text("|", style: GoogleFonts.fredokaOne(fontSize: 15, color: Colors.blueGrey), textAlign: TextAlign.center),
358
+                                                Text("|", style: GoogleFonts.fredokaOne(fontSize: 15, color: Colors.blueGrey), textAlign: TextAlign.center),
359
+                                              ],
360
+                                            ),
361
+                                          )
362
+                                      ),
363
+                                      Expanded(
364
+                                          flex: 1,
365
+                                          child: Visibility(
366
+                                            visible: visibilityDate2[i],
367
+                                            child: Column(
368
+                                              children: [
369
+                                                Text(dayDate_list_2[i], style: GoogleFonts.fredokaOne(fontSize: 15, color: Colors.blueGrey), textAlign: TextAlign.left,),
370
+                                                Text(date_list_2[i], style: GoogleFonts.fredokaOne(fontSize: 15, color: Colors.blueGrey), textAlign: TextAlign.left),
371
+                                                Text(month_list_2[i], style: GoogleFonts.fredokaOne(fontSize: 15, color: Colors.blueGrey), textAlign: TextAlign.left),
372
+                                              ],
373
+                                            ),
374
+                                          ))*/
375
+                                    ],
376
+                                  ),
377
+                                )
274
                               ),
378
                               ),
275
                               Expanded(
379
                               Expanded(
276
                                 flex: 2,
380
                                 flex: 2,
393
       return alert;
497
       return alert;
394
     },
498
     },
395
   );
499
   );
396
-}
500
+}
501
+
502
+void sendLogMessage(String message) {
503
+  FirebaseCrashlytics.instance.log(message);
504
+}

+ 236
- 297
lib/Screens/Menu/Absensi/absensi_screen.dart View File

5
 import 'package:flutter_map/plugin_api.dart';
5
 import 'package:flutter_map/plugin_api.dart';
6
 import 'package:geolocator/geolocator.dart';
6
 import 'package:geolocator/geolocator.dart';
7
 import 'package:google_fonts/google_fonts.dart';
7
 import 'package:google_fonts/google_fonts.dart';
8
-import 'package:hris_selfservice_mobile/Screens/Menu/Absensi/RequestHttp/checkIn_post.dart';
9
-import 'package:hris_selfservice_mobile/Screens/Menu/Absensi/RequestHttp/checkStatus_post.dart';
10
-import 'package:hris_selfservice_mobile/Screens/Menu/Absensi/absensi_history_screen.dart';
8
+import 'package:employee_selfservice_mobile/Screens/Menu/Absensi/RequestHttp/checkIn_post.dart';
9
+import 'package:employee_selfservice_mobile/Screens/Menu/Absensi/RequestHttp/checkStatus_post.dart';
10
+import 'package:employee_selfservice_mobile/Screens/Menu/Absensi/absensi_history_screen.dart';
11
 import 'package:intl/intl.dart';
11
 import 'package:intl/intl.dart';
12
 import 'package:latlong2/latlong.dart' as latlong;
12
 import 'package:latlong2/latlong.dart' as latlong;
13
 import 'dart:developer' as logDev;
13
 import 'dart:developer' as logDev;
14
 
14
 
15
 import 'package:progress_dialog_null_safe/progress_dialog_null_safe.dart';
15
 import 'package:progress_dialog_null_safe/progress_dialog_null_safe.dart';
16
+import 'package:sliding_up_panel/sliding_up_panel.dart';
16
 
17
 
17
 import 'RequestHttp/checkOut_post.dart';
18
 import 'RequestHttp/checkOut_post.dart';
18
 import 'RequestHttp/historyAbsensi_post.dart';
19
 import 'RequestHttp/historyAbsensi_post.dart';
41
   void initState() {
42
   void initState() {
42
     showCheckIn_List = "";
43
     showCheckIn_List = "";
43
     showCheckOut_List = "";
44
     showCheckOut_List = "";
45
+
44
     WidgetsBinding.instance.addPostFrameCallback((_) {
46
     WidgetsBinding.instance.addPostFrameCallback((_) {
45
       determinePosition();
47
       determinePosition();
46
     });
48
     });
209
     bool serviceEnabled;
211
     bool serviceEnabled;
210
     LocationPermission permission;
212
     LocationPermission permission;
211
 
213
 
212
-    loading.show();
214
+    //loading.show();
213
     serviceEnabled = await Geolocator.isLocationServiceEnabled();
215
     serviceEnabled = await Geolocator.isLocationServiceEnabled();
214
     if (!serviceEnabled) {
216
     if (!serviceEnabled) {
215
       loading.hide();
217
       loading.hide();
376
     });
378
     });
377
   }
379
   }
378
 
380
 
381
+  PanelController _panelController = PanelController();
382
+
383
+  void togglePanel() => _panelController.isPanelOpen
384
+      ? _panelController.close()
385
+      : _panelController.open();
386
+
379
   @override
387
   @override
380
   Widget build(BuildContext context) {
388
   Widget build(BuildContext context) {
381
     var size = MediaQuery.of(context).size;
389
     var size = MediaQuery.of(context).size;
382
     return Scaffold(
390
     return Scaffold(
383
-      body: SingleChildScrollView(
384
-        child: Column(
385
-          children: [
386
-            Container(
387
-              height: size.height * 0.6,
388
-              child: Stack(
391
+      body: SlidingUpPanel(
392
+        controller: _panelController,
393
+        parallaxEnabled: true,
394
+        maxHeight: size.height * 0.5,
395
+        minHeight: size.height * 0.3,
396
+        body: Container (
397
+          child: Stack(
398
+            children: [
399
+              FlutterMap(
400
+                mapController: _mapController,
401
+                options: new MapOptions(
402
+                    onTap: (p, point) async {}, center: point, zoom: 15),
389
                 children: [
403
                 children: [
390
-                  FlutterMap(
391
-                    mapController: _mapController,
392
-                    options: new MapOptions(
393
-                        onTap: (p, point) async {}, center: point, zoom: 15),
394
-                    children: [
395
-                      TileLayer(
396
-                        minZoom: 1,
397
-                        maxZoom: 22,
398
-                        maxNativeZoom: 18,
399
-                        minNativeZoom: 1,
400
-                        backgroundColor: Colors.black54,
401
-                        urlTemplate:
402
-                            'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',
403
-                        subdomains: ['a', 'b', 'c'],
404
-                      ),
405
-                      MarkerLayer(markers: [
406
-                        Marker(
407
-                            width: 135,
408
-                            height: 135,
409
-                            point: point,
410
-                            builder: (ctx) => Container(
411
-                                  child: Icon(
412
-                                    Icons.location_on,
413
-                                    color: Colors.red,
414
-                                  ),
415
-                                ))
416
-                      ])
417
-                    ],
404
+                  TileLayer(
405
+                    minZoom: 1,
406
+                    maxZoom: 22,
407
+                    maxNativeZoom: 18,
408
+                    minNativeZoom: 1,
409
+                    backgroundColor: Colors.black54,
410
+                    urlTemplate:
411
+                    'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',
412
+                    subdomains: ['a', 'b', 'c'],
418
                   ),
413
                   ),
419
-                  Align(
420
-                    alignment: AlignmentDirectional.bottomEnd,
421
-                    child: Container(
422
-                      margin: EdgeInsets.fromLTRB(10, 15, 0, 15),
423
-                      child: RawMaterialButton(
424
-                        onPressed: () {
425
-                          setState(() {
426
-                            updatePosition();
427
-                          });
428
-                        },
429
-                        elevation: 5.0,
430
-                        fillColor: Colors.white,
431
-                        child: Image.asset('assets/images/location1.png',
432
-                            height: 40, width: 40),
433
-                        padding: EdgeInsets.all(5.0),
434
-                        shape: CircleBorder(),
435
-                      ),
436
-                    ),
437
-                  )
414
+                  MarkerLayer(markers: [
415
+                    Marker(
416
+                        width: 135,
417
+                        height: 135,
418
+                        point: point,
419
+                        builder: (ctx) => Container(
420
+                          child: Icon(
421
+                            Icons.location_on,
422
+                            color: Colors.red,
423
+                          ),
424
+                        ))
425
+                  ])
438
                 ],
426
                 ],
439
               ),
427
               ),
440
-            ),
441
-            Container(
442
-              width: double.infinity,
443
-              margin: EdgeInsets.fromLTRB(10, 15, 10, 10),
444
-              decoration:
445
-                  BoxDecoration(border: Border.all(color: Colors.black)),
446
-              child: Column(
447
-                children: <Widget>[
448
-                  Container(
449
-                    child: Text(
450
-                      "Last Attendance",
451
-                      style: GoogleFonts.patrickHand(
452
-                          fontSize: 21, color: Colors.white),
453
-                    ),
454
-                    width: double.infinity,
455
-                    alignment: Alignment.center,
456
-                    decoration: BoxDecoration(
457
-                        gradient: LinearGradient(
458
-                            begin: Alignment.topRight,
459
-                            end: Alignment.bottomRight,
460
-                            colors: [
461
-                              /*Color(0xFFD21404),
462
-                              Color(0xFFFD7267),*/
463
-                              Color(0xFF4858A7),
464
-                              Color(0xFF6474C6),
465
-                            ]),
466
-                        border: Border.all(color: Colors.black)),
428
+              Container(
429
+                alignment: AlignmentDirectional.bottomEnd,
430
+                child: Container(
431
+                  margin: EdgeInsets.fromLTRB(10, 15, 0, (size.height*0.3) + 15),
432
+                  child: RawMaterialButton(
433
+                    onPressed: () {
434
+                      setState(() {
435
+                        updatePosition();
436
+                      });
437
+                    },
438
+                    elevation: 5.0,
439
+                    fillColor: Colors.white,
440
+                    child: Image.asset('assets/images/location1.png',
441
+                        height: 40, width: 40),
442
+                    padding: EdgeInsets.all(5.0),
443
+                    shape: CircleBorder(),
467
                   ),
444
                   ),
468
-                  Container(
469
-                    width: double.infinity,
470
-                    padding: EdgeInsets.all(15),
471
-                    decoration:
472
-                        BoxDecoration(border: Border.all(color: Colors.black)),
473
-                    child: Column(
474
-                      children: [
475
-                        Row(
476
-                          mainAxisAlignment: MainAxisAlignment.spaceAround,
477
-                          children: [
478
-                            Expanded(
479
-                                flex: 5,
480
-                                child: Column(
481
-                                  children: [
482
-                                    Text('Check In',
483
-                                        style: GoogleFonts.fredokaOne(
484
-                                            fontSize: 19)),
485
-                                    Text(showCheckIn_List,
486
-                                        style: GoogleFonts.barlowSemiCondensed(
487
-                                            fontSize: 19)),
488
-                                  ],
489
-                                )),
490
-                            Expanded(
491
-                                flex: 5,
492
-                                child: Column(
493
-                                  children: [
494
-                                    Text('Check Out',
495
-                                        style: GoogleFonts.fredokaOne(
496
-                                            fontSize: 19)),
497
-                                    Text(showCheckOut_List,
498
-                                        style: GoogleFonts.barlowSemiCondensed(
499
-                                            fontSize: 19)),
500
-                                  ],
501
-                                )),
502
-                          ],
503
-                        ),
504
-                        Row(
505
-                          children: [
506
-                            Visibility(
507
-                              visible: visibleCheckIn,
508
-                              child: Container(
509
-                                margin: EdgeInsets.fromLTRB(0, 10, 0, 0),
510
-                                width: size.width - 54,
511
-                                child: ElevatedButton(
512
-                                  onPressed: () {
513
-                                    goCheckIn();
514
-                                  },
515
-                                  child: Text('Check In'),
516
-                                  style: ButtonStyle(
517
-                                      backgroundColor: MaterialStateProperty.all(
518
-                                          Color(0xFF6474C6))),
519
-                                ),
520
-                              ),
521
-                            ),
522
-                            Visibility(
523
-                              visible: visibleCheckOut,
524
-                              child: Container(
525
-                                margin: EdgeInsets.fromLTRB(0, 10, 0, 0),
526
-                                width: size.width - 54,
527
-                                child: ElevatedButton(
528
-                                  onPressed: () {
529
-                                    goCheckOut();
530
-                                  },
531
-                                  child: Text('Check Out'),
532
-                                  style: ButtonStyle(
533
-                                      backgroundColor: MaterialStateProperty.all(
534
-                                          Color(0xFF6474C6))),
535
-                                ),
536
-                              ),
537
-                            ),
538
-                          ],
539
-                        )
540
-                      ],
541
-                    ),
542
-                  )
543
-                ],
445
+                ),
544
               ),
446
               ),
545
-            ),
546
-            /*Container(
547
-                width: double.infinity,
548
-                margin: EdgeInsets.fromLTRB(10, 10, 10, 0),
549
-                padding: EdgeInsets.all(15),
550
-                decoration:
551
-                    BoxDecoration(border: Border.all(color: Colors.black)),
552
-                child: Column(
553
-                  children: [
554
-                    Row(
555
-                      mainAxisAlignment: MainAxisAlignment.spaceBetween,
556
-                      children: [
557
-                        Text('Rabu, 23 November 2022', maxLines: 1),
558
-                        Column(
559
-                          children: [Text('Check In'), Text('07.00')],
560
-                        ),
561
-                        Column(
562
-                          children: [
563
-                            Text('Check Out'),
564
-                            Text('16.30'),
565
-                          ],
566
-                        ),
567
-                      ],
568
-                    ),
569
-                    Text('Location : Global Service Indonesia', maxLines: 1),
570
-                  ],
571
-                )),
572
-            Container(
573
-                width: double.infinity,
574
-                margin: EdgeInsets.fromLTRB(10, 10, 10, 0),
575
-                padding: EdgeInsets.all(15),
576
-                decoration:
577
-                    BoxDecoration(border: Border.all(color: Colors.black)),
578
-                child: Column(
579
-                  children: [
580
-                    Row(
581
-                      mainAxisAlignment: MainAxisAlignment.spaceBetween,
582
-                      children: [
583
-                        Text('Rabu, 23 November 2022', maxLines: 1),
584
-                        Column(
585
-                          children: [Text('Check In'), Text('07.00')],
586
-                        ),
587
-                        Column(
588
-                          children: [
589
-                            Text('Check Out'),
590
-                            Text('16.30'),
591
-                          ],
592
-                        ),
593
-                      ],
594
-                    ),
595
-                    Text('Location : Global Service Indonesia', maxLines: 1),
596
-                  ],
597
-                )),
598
-            Container(
599
-                width: double.infinity,
600
-                margin: EdgeInsets.fromLTRB(10, 10, 10, 0),
601
-                padding: EdgeInsets.all(15),
602
-                decoration:
603
-                    BoxDecoration(border: Border.all(color: Colors.black)),
604
-                child: Column(
605
-                  children: [
606
-                    Row(
607
-                      mainAxisAlignment: MainAxisAlignment.spaceBetween,
608
-                      children: [
609
-                        Text('Rabu, 23 November 2022', maxLines: 1),
610
-                        Column(
611
-                          children: [Text('Check In'), Text('07.00')],
612
-                        ),
613
-                        Column(
614
-                          children: [
615
-                            Text('Check Out'),
616
-                            Text('16.30'),
617
-                          ],
618
-                        ),
619
-                      ],
447
+            ],
448
+          ),
449
+        ),
450
+        panel: Center(
451
+          child: Column(
452
+            children: [
453
+              GestureDetector(
454
+                onTap: togglePanel,
455
+                child: Center(
456
+                  child: Container(
457
+                    margin: EdgeInsets.only(top: 15),
458
+                    height: 5,
459
+                      width: size.width * 0.1,
460
+                      decoration: BoxDecoration(
461
+                        borderRadius: BorderRadius.circular(10),
462
+                        color: Colors.grey
463
+                      ),
464
+                  ),
465
+                ),
466
+              ),
467
+              Container(
468
+                margin: EdgeInsets.only(top: 15),
469
+                child: Center(
470
+                  child: Text(
471
+                    'ATTENDANCE',
472
+                    maxLines: 1,
473
+                    style: GoogleFonts.luckiestGuy(
474
+                      fontSize: 28,
475
+                      color: Color(0xFF4858A7),
476
+                      fontStyle: FontStyle.italic,
620
                     ),
477
                     ),
621
-                    Text('Location : Global Service Indonesia', maxLines: 1),
622
-                  ],
623
-                )),
624
-            Container(
478
+                  ),
479
+                ),
480
+              ),
481
+              Container(
625
                 width: double.infinity,
482
                 width: double.infinity,
626
-                margin: EdgeInsets.fromLTRB(10, 10, 10, 0),
627
-                padding: EdgeInsets.all(15),
483
+                margin: EdgeInsets.fromLTRB(10, 15, 10, 10),
628
                 decoration:
484
                 decoration:
629
-                    BoxDecoration(border: Border.all(color: Colors.black)),
485
+                BoxDecoration(border: Border.all(color: Colors.black), borderRadius: BorderRadius.all(Radius.circular(15))),
630
                 child: Column(
486
                 child: Column(
631
-                  children: [
632
-                    Row(
633
-                      mainAxisAlignment: MainAxisAlignment.spaceBetween,
634
-                      children: [
635
-                        Text('Rabu, 23 November 2022', maxLines: 1),
636
-                        Column(
637
-                          children: [Text('Check In'), Text('07.00')],
638
-                        ),
639
-                        Column(
640
-                          children: [
641
-                            Text('Check Out'),
642
-                            Text('16.30'),
643
-                          ],
644
-                        ),
645
-                      ],
487
+                  children: <Widget>[
488
+                    Container(
489
+                      child: Text(
490
+                        "Last Attendance",
491
+                        style: GoogleFonts.patrickHand(
492
+                            fontSize: 21, color: Colors.white),
493
+                      ),
494
+                      width: double.infinity,
495
+                      alignment: Alignment.center,
496
+                      decoration: BoxDecoration(
497
+                          gradient: LinearGradient(
498
+                              begin: Alignment.topRight,
499
+                              end: Alignment.bottomRight,
500
+                              colors: [
501
+                                /*Color(0xFFD21404),
502
+                              Color(0xFFFD7267),*/
503
+                                Color(0xFF4858A7),
504
+                                Color(0xFF6474C6),
505
+                              ]),
506
+                          border: Border.all(color: Colors.black), borderRadius: BorderRadius.only(topLeft: Radius.circular(15), topRight: Radius.circular(15))),
646
                     ),
507
                     ),
647
-                    Text('Location : Global Service Indonesia', maxLines: 1),
508
+                    Container(
509
+                      width: double.infinity,
510
+                      padding: EdgeInsets.all(15),
511
+                      decoration:
512
+                      BoxDecoration(border: Border.all(color: Colors.black), borderRadius: BorderRadius.only(bottomLeft: Radius.circular(15), bottomRight: Radius.circular(15))),
513
+                      child: Column(
514
+                        children: [
515
+                          Row(
516
+                            mainAxisAlignment: MainAxisAlignment.spaceAround,
517
+                            children: [
518
+                              Expanded(
519
+                                  flex: 5,
520
+                                  child: Column(
521
+                                    children: [
522
+                                      Text('Check In',
523
+                                          style: GoogleFonts.fredokaOne(
524
+                                              fontSize: 19)),
525
+                                      Text(showCheckIn_List,
526
+                                          style: GoogleFonts.barlowSemiCondensed(
527
+                                              fontSize: 19)),
528
+                                    ],
529
+                                  )),
530
+                              Expanded(
531
+                                  flex: 5,
532
+                                  child: Column(
533
+                                    children: [
534
+                                      Text('Check Out',
535
+                                          style: GoogleFonts.fredokaOne(
536
+                                              fontSize: 19)),
537
+                                      Text(showCheckOut_List,
538
+                                          style: GoogleFonts.barlowSemiCondensed(
539
+                                              fontSize: 19)),
540
+                                    ],
541
+                                  )),
542
+                            ],
543
+                          ),
544
+                          Row(
545
+                            children: [
546
+                              Visibility(
547
+                                visible: visibleCheckIn,
548
+                                child: Container(
549
+                                  margin: EdgeInsets.fromLTRB(0, 10, 0, 0),
550
+                                  width: size.width - 54,
551
+                                  child: ElevatedButton(
552
+                                    onPressed: () {
553
+                                      goCheckIn();
554
+                                    },
555
+                                    child: Text('Check In'),
556
+                                    style: ButtonStyle(
557
+                                        backgroundColor: MaterialStateProperty.all(
558
+                                            Color(0xFF6474C6))),
559
+                                  ),
560
+                                ),
561
+                              ),
562
+                              Visibility(
563
+                                visible: visibleCheckOut,
564
+                                child: Container(
565
+                                  margin: EdgeInsets.fromLTRB(0, 10, 0, 0),
566
+                                  width: size.width - 54,
567
+                                  child: ElevatedButton(
568
+                                    onPressed: () {
569
+                                      goCheckOut();
570
+                                    },
571
+                                    child: Text('Check Out'),
572
+                                    style: ButtonStyle(
573
+                                        backgroundColor: MaterialStateProperty.all(
574
+                                            Color(0xFF6474C6))),
575
+                                  ),
576
+                                ),
577
+                              ),
578
+                            ],
579
+                          )
580
+                        ],
581
+                      ),
582
+                    )
648
                   ],
583
                   ],
649
-                )),*/
650
-            Container(
651
-              margin: EdgeInsets.fromLTRB(10, 15, 10, 15),
652
-              child: InkWell(
653
-                child: Container(
654
-                    padding: EdgeInsets.fromLTRB(10, 10, 10, 10),
655
-                    width: double.infinity,
656
-                    decoration: BoxDecoration(
657
-                        borderRadius: BorderRadius.circular(5),
658
-                        gradient: LinearGradient(colors: [
659
-                          Color(0xFF2D4059),
660
-                          Color(0xFF2D4059),
661
-                          /*Color(0xFFEAFFD0),
662
-                                  Color(0xFF95E1D3),*/
663
-                        ])),
664
-                    child: Row(
665
-                      mainAxisAlignment: MainAxisAlignment.center,
666
-                      children: [
667
-                        Text(' See Attendance History   \t\t',
668
-                            textAlign: TextAlign.center,
669
-                            style: TextStyle(
670
-                                color: Colors.white,
671
-                                fontSize: 17,
672
-                                fontWeight: FontWeight.w500)),
673
-                        Image.asset(
674
-                          'assets/images/ic_arrow_white.png',
675
-                          width: 30,
676
-                          height: 30,
677
-                        )
678
-                      ],
679
-                    )),
680
-                onTap: () {
681
-                  Navigator.push(
682
-                      context,
683
-                      MaterialPageRoute(
684
-                          builder: (context) => HistoryAbsensi()));
685
-                },
584
+                ),
686
               ),
585
               ),
687
-            ),
688
-          ],
586
+              Container(
587
+                margin: EdgeInsets.fromLTRB(10, 15, 10, 15),
588
+                child: InkWell(
589
+                  child: Container(
590
+                      padding: EdgeInsets.fromLTRB(10, 10, 10, 10),
591
+                      width: double.infinity,
592
+                      decoration: BoxDecoration(
593
+                          borderRadius: BorderRadius.circular(5),
594
+                          gradient: LinearGradient(colors: [
595
+                            Color(0xFF2D4059),
596
+                            Color(0xFF2D4059),
597
+                            /*Color(0xFFEAFFD0),
598
+                                  Color(0xFF95E1D3),*/
599
+                          ])),
600
+                      child: Row(
601
+                        mainAxisAlignment: MainAxisAlignment.center,
602
+                        children: [
603
+                          Text(' See Attendance History   \t\t',
604
+                              textAlign: TextAlign.center,
605
+                              style: TextStyle(
606
+                                  color: Colors.white,
607
+                                  fontSize: 17,
608
+                                  fontWeight: FontWeight.w500)),
609
+                          Image.asset(
610
+                            'assets/images/ic_arrow_white.png',
611
+                            width: 30,
612
+                            height: 30,
613
+                          )
614
+                        ],
615
+                      )),
616
+                  onTap: () {
617
+                    Navigator.push(
618
+                        context,
619
+                        MaterialPageRoute(
620
+                            builder: (context) => HistoryAbsensi()));
621
+                  },
622
+                ),
623
+              )
624
+            ],
625
+          ),
689
         ),
626
         ),
627
+
628
+       borderRadius: BorderRadius.only(topLeft: Radius.circular(15), topRight: Radius.circular(15)),
690
       ),
629
       ),
691
     );
630
     );
692
   }
631
   }

+ 1
- 1
lib/Screens/Menu/AjukanCuti/RequestHttp/detailCuti_post.dart View File

1
 import 'dart:convert';
1
 import 'dart:convert';
2
 import 'dart:core';
2
 import 'dart:core';
3
 import 'package:http/http.dart' as http;
3
 import 'package:http/http.dart' as http;
4
-import 'package:hris_selfservice_mobile/constants.dart';
4
+import 'package:employee_selfservice_mobile/constants.dart';
5
 import 'dart:developer' as developer;
5
 import 'dart:developer' as developer;
6
 
6
 
7
 import 'package:shared_preferences/shared_preferences.dart';
7
 import 'package:shared_preferences/shared_preferences.dart';

+ 0
- 0
lib/Screens/Menu/AjukanCuti/RequestHttp/historyCuti_post.dart View File


Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save