소스 검색

Update 1206

dienianindya 1 년 전
부모
커밋
a53bb13202
100개의 변경된 파일789개의 추가작업 그리고 399개의 파일을 삭제
  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 파일 보기

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

BIN
android/app/src/main/res/IconKitchen-Output/android/play_store_512.png 파일 보기


+ 6
- 0
android/app/src/main/res/IconKitchen-Output/android/res/mipmap-anydpi-v26/ic_launcher.xml 파일 보기

@@ -0,0 +1,6 @@
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 파일 보기


BIN
android/app/src/main/res/IconKitchen-Output/android/res/mipmap-hdpi/ic_launcher_background.png 파일 보기


BIN
android/app/src/main/res/IconKitchen-Output/android/res/mipmap-hdpi/ic_launcher_foreground.png 파일 보기


BIN
android/app/src/main/res/IconKitchen-Output/android/res/mipmap-hdpi/ic_launcher_monochrome.png 파일 보기


BIN
android/app/src/main/res/IconKitchen-Output/android/res/mipmap-mdpi/ic_launcher.png 파일 보기


BIN
android/app/src/main/res/IconKitchen-Output/android/res/mipmap-mdpi/ic_launcher_background.png 파일 보기


BIN
android/app/src/main/res/IconKitchen-Output/android/res/mipmap-mdpi/ic_launcher_foreground.png 파일 보기


BIN
android/app/src/main/res/IconKitchen-Output/android/res/mipmap-mdpi/ic_launcher_monochrome.png 파일 보기


BIN
android/app/src/main/res/IconKitchen-Output/android/res/mipmap-xhdpi/ic_launcher.png 파일 보기


BIN
android/app/src/main/res/IconKitchen-Output/android/res/mipmap-xhdpi/ic_launcher_background.png 파일 보기


BIN
android/app/src/main/res/IconKitchen-Output/android/res/mipmap-xhdpi/ic_launcher_foreground.png 파일 보기


BIN
android/app/src/main/res/IconKitchen-Output/android/res/mipmap-xhdpi/ic_launcher_monochrome.png 파일 보기


BIN
android/app/src/main/res/IconKitchen-Output/android/res/mipmap-xxhdpi/ic_launcher.png 파일 보기


BIN
android/app/src/main/res/IconKitchen-Output/android/res/mipmap-xxhdpi/ic_launcher_background.png 파일 보기


BIN
android/app/src/main/res/IconKitchen-Output/android/res/mipmap-xxhdpi/ic_launcher_foreground.png 파일 보기


BIN
android/app/src/main/res/IconKitchen-Output/android/res/mipmap-xxhdpi/ic_launcher_monochrome.png 파일 보기


BIN
android/app/src/main/res/IconKitchen-Output/android/res/mipmap-xxxhdpi/ic_launcher.png 파일 보기


BIN
android/app/src/main/res/IconKitchen-Output/android/res/mipmap-xxxhdpi/ic_launcher_background.png 파일 보기


BIN
android/app/src/main/res/IconKitchen-Output/android/res/mipmap-xxxhdpi/ic_launcher_foreground.png 파일 보기


BIN
android/app/src/main/res/IconKitchen-Output/android/res/mipmap-xxxhdpi/ic_launcher_monochrome.png 파일 보기


BIN
android/app/src/main/res/IconKitchen-Output/ios/AppIcon-20@2x.png 파일 보기


BIN
android/app/src/main/res/IconKitchen-Output/ios/AppIcon-20@2x~ipad.png 파일 보기


BIN
android/app/src/main/res/IconKitchen-Output/ios/AppIcon-20@3x.png 파일 보기


BIN
android/app/src/main/res/IconKitchen-Output/ios/AppIcon-20~ipad.png 파일 보기


BIN
android/app/src/main/res/IconKitchen-Output/ios/AppIcon-29.png 파일 보기


BIN
android/app/src/main/res/IconKitchen-Output/ios/AppIcon-29@2x.png 파일 보기


BIN
android/app/src/main/res/IconKitchen-Output/ios/AppIcon-29@2x~ipad.png 파일 보기


BIN
android/app/src/main/res/IconKitchen-Output/ios/AppIcon-29@3x.png 파일 보기


BIN
android/app/src/main/res/IconKitchen-Output/ios/AppIcon-29~ipad.png 파일 보기


BIN
android/app/src/main/res/IconKitchen-Output/ios/AppIcon-40@2x.png 파일 보기


BIN
android/app/src/main/res/IconKitchen-Output/ios/AppIcon-40@2x~ipad.png 파일 보기


BIN
android/app/src/main/res/IconKitchen-Output/ios/AppIcon-40@3x.png 파일 보기


BIN
android/app/src/main/res/IconKitchen-Output/ios/AppIcon-40~ipad.png 파일 보기


BIN
android/app/src/main/res/IconKitchen-Output/ios/AppIcon-60@2x~car.png 파일 보기


BIN
android/app/src/main/res/IconKitchen-Output/ios/AppIcon-60@3x~car.png 파일 보기


BIN
android/app/src/main/res/IconKitchen-Output/ios/AppIcon-83.5@2x~ipad.png 파일 보기


BIN
android/app/src/main/res/IconKitchen-Output/ios/AppIcon@2x.png 파일 보기


BIN
android/app/src/main/res/IconKitchen-Output/ios/AppIcon@2x~ipad.png 파일 보기


BIN
android/app/src/main/res/IconKitchen-Output/ios/AppIcon@3x.png 파일 보기


BIN
android/app/src/main/res/IconKitchen-Output/ios/AppIcon~ios-marketing.png 파일 보기


BIN
android/app/src/main/res/IconKitchen-Output/ios/AppIcon~ipad.png 파일 보기


+ 134
- 0
android/app/src/main/res/IconKitchen-Output/ios/Contents.json 파일 보기

@@ -0,0 +1,134 @@
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 파일 보기

@@ -0,0 +1,18 @@
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 파일 보기


BIN
android/app/src/main/res/IconKitchen-Output/web/favicon.ico 파일 보기


BIN
android/app/src/main/res/IconKitchen-Output/web/icon-192-maskable.png 파일 보기


BIN
android/app/src/main/res/IconKitchen-Output/web/icon-192.png 파일 보기


BIN
android/app/src/main/res/IconKitchen-Output/web/icon-512-maskable.png 파일 보기


BIN
android/app/src/main/res/IconKitchen-Output/web/icon-512.png 파일 보기


+ 74
- 0
android/app/src/main/res/drawable/ic_launcher_background.xml 파일 보기

@@ -0,0 +1,74 @@
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 파일 보기


+ 3
- 2
android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml 파일 보기

@@ -1,5 +1,6 @@
1 1
 <?xml version="1.0" encoding="utf-8"?>
2 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 6
 </adaptive-icon>

+ 1
- 1
android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml 파일 보기

@@ -1,5 +1,5 @@
1 1
 <?xml version="1.0" encoding="utf-8"?>
2 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 4
     <foreground android:drawable="@mipmap/ic_launcher_foreground"/>
5 5
 </adaptive-icon>

BIN
android/app/src/main/res/mipmap-hdpi/ic_launcher.png 파일 보기


BIN
android/app/src/main/res/mipmap-hdpi/ic_launcher_background.png 파일 보기


BIN
android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png 파일 보기


BIN
android/app/src/main/res/mipmap-hdpi/ic_launcher_monochrome.png 파일 보기


BIN
android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png 파일 보기


BIN
android/app/src/main/res/mipmap-ldpi/ic_launcher.png 파일 보기


BIN
android/app/src/main/res/mipmap-mdpi/ic_launcher.png 파일 보기


BIN
android/app/src/main/res/mipmap-mdpi/ic_launcher_background.png 파일 보기


BIN
android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png 파일 보기


BIN
android/app/src/main/res/mipmap-mdpi/ic_launcher_monochrome.png 파일 보기


BIN
android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png 파일 보기


BIN
android/app/src/main/res/mipmap-xhdpi/ic_launcher.png 파일 보기


BIN
android/app/src/main/res/mipmap-xhdpi/ic_launcher_background.png 파일 보기


BIN
android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png 파일 보기


BIN
android/app/src/main/res/mipmap-xhdpi/ic_launcher_monochrome.png 파일 보기


BIN
android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png 파일 보기


BIN
android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png 파일 보기


BIN
android/app/src/main/res/mipmap-xxhdpi/ic_launcher_background.png 파일 보기


BIN
android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png 파일 보기


BIN
android/app/src/main/res/mipmap-xxhdpi/ic_launcher_monochrome.png 파일 보기


BIN
android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png 파일 보기


BIN
android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png 파일 보기


BIN
android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_background.png 파일 보기


BIN
android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png 파일 보기


BIN
android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_monochrome.png 파일 보기


BIN
android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png 파일 보기


BIN
android/app/src/main/res/playstore-icon.png 파일 보기


+ 3
- 3
android/build.gradle 파일 보기

@@ -9,7 +9,7 @@ buildscript {
9 9
         classpath 'com.android.tools.build:gradle:7.1.3'
10 10
         classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
11 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,6 +28,6 @@ subprojects {
28 28
     project.evaluationDependsOn(':app')
29 29
 }
30 30
 
31
-task clean(type: Delete) {
31
+tasks.register("clean", Delete) {
32 32
     delete rootProject.buildDir
33
-}
33
+}

+ 1
- 1
android/gradle/wrapper/gradle-wrapper.properties 파일 보기

@@ -2,4 +2,4 @@ distributionBase=GRADLE_USER_HOME
2 2
 distributionPath=wrapper/dists
3 3
 zipStoreBase=GRADLE_USER_HOME
4 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 파일 보기


+ 9
- 1
lib/NotificationService/local_notification_service.dart 파일 보기

@@ -21,6 +21,12 @@ class LocalNotificationService{
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 32
   static void createanddisplaynotification(RemoteMessage message) async {
@@ -30,7 +36,9 @@ class LocalNotificationService{
30 36
         android: AndroidNotificationDetails(
31 37
           "pushnotificationapp",
32 38
           "pushnotificationappchannel",
33
-          icon: "@mipmap/ic_launcher",
39
+          //icon: "@mipmap/ic_launcher",
40
+          largeIcon: DrawableResourceAndroidBitmap('assets/images/sindi_icon.png'),
41
+          enableVibration: true,
34 42
           importance: Importance.max,
35 43
           priority: Priority.high,
36 44
         ),

+ 4
- 4
lib/Screens/ForgotPassword/forgotPassword_screen.dart 파일 보기

@@ -3,10 +3,10 @@ import 'dart:convert';
3 3
 import 'package:flutter/material.dart';
4 4
 import 'package:fluttertoast/fluttertoast.dart';
5 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 10
 import 'package:progress_dialog_null_safe/progress_dialog_null_safe.dart';
11 11
 
12 12
 class ForgotPasswordView extends StatefulWidget {

+ 1
- 1
lib/Screens/ForgotPassword/resetPassword_post.dart 파일 보기

@@ -1,7 +1,7 @@
1 1
 import 'dart:convert';
2 2
 import 'dart:core';
3 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 5
 import 'dart:developer' as developer;
6 6
 
7 7
 class ResetPassword_Post {

+ 151
- 50
lib/Screens/Home/home_screen.dart 파일 보기

@@ -9,13 +9,13 @@ import 'package:flutter/material.dart';
9 9
 import 'package:fluttertoast/fluttertoast.dart';
10 10
 import 'package:focus_detector/focus_detector.dart';
11 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 19
 import 'package:lottie/lottie.dart';
20 20
 import 'package:progress_dialog_null_safe/progress_dialog_null_safe.dart';
21 21
 import 'package:shared_preferences/shared_preferences.dart';
@@ -186,6 +186,16 @@ class _HomeView extends State<HomeView> {
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 199
   @override
190 200
   Widget build(BuildContext context) {
191 201
     return MaterialApp(
@@ -205,7 +215,8 @@ class _HomeView extends State<HomeView> {
205 215
             body: Stack(
206 216
               children: <Widget>[
207 217
                 //Background(),
208
-                HomeScreen(),
218
+                //HomeScreen(),
219
+                BottomNavBar()
209 220
               ],
210 221
             )),
211 222
       ),
@@ -247,6 +258,53 @@ class _HomeView extends State<HomeView> {
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 308
 class HomeScreen extends StatefulWidget {
251 309
   @override
252 310
   State<HomeScreen> createState() => _HomeScreenState();
@@ -345,7 +403,7 @@ class _HomeScreenState extends State<HomeScreen> {
345 403
                     padding: EdgeInsets.all(20),
346 404
                     child: Column(
347 405
                       children: <Widget>[
348
-                        Align(
406
+                       /* Align(
349 407
                           alignment: Alignment.topRight,
350 408
                           child: InkWell(
351 409
                             child: Container(
@@ -360,13 +418,13 @@ class _HomeScreenState extends State<HomeScreen> {
360 418
                                       builder: (context) => SettingsScreen()));
361 419
                             },
362 420
                           ),
363
-                        ),
421
+                        ),*/
364 422
                         Container(
365 423
                           child:  Stack(
366 424
                             alignment: Alignment.topLeft,
367 425
                             children: [
368 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 428
                                 child: Card(
371 429
                                   elevation: 15,
372 430
                                   child: Container(
@@ -402,7 +460,7 @@ class _HomeScreenState extends State<HomeScreen> {
402 460
                               Align(
403 461
                                 alignment: Alignment.topCenter,
404 462
                                 child: Container(
405
-                                  margin: EdgeInsets.only(left: 15),
463
+                                  margin: EdgeInsets.only(left: 15, top: 40),
406 464
                                   alignment: Alignment.topLeft,
407 465
                                   height: (size.width - 20) * 0.33,
408 466
                                   width: (size.width - 20) * 0.33,
@@ -410,7 +468,7 @@ class _HomeScreenState extends State<HomeScreen> {
410 468
                                     color: Colors.black,
411 469
                                     image: DecorationImage(
412 470
                                       image: _imageToShow,
413
-                                      fit: BoxFit.fill,
471
+                                      fit: BoxFit.cover,
414 472
                                     ),
415 473
                                     shape: BoxShape.circle,
416 474
                                   ),
@@ -522,7 +580,7 @@ class _HomeScreenState extends State<HomeScreen> {
522 580
                                       margin: EdgeInsets.only(top: 10),
523 581
                                       padding: EdgeInsets.all(5),
524 582
                                       child: Text(
525
-                                        'Time Off Submission',
583
+                                        'Leaves',
526 584
                                         textAlign: TextAlign.center,
527 585
                                         style: GoogleFonts.acme(
528 586
                                             fontSize: 18, color: Colors.black),
@@ -538,41 +596,6 @@ class _HomeScreenState extends State<HomeScreen> {
538 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 599
                             InkWell(
577 600
                               child: Container(
578 601
                                 decoration: BoxDecoration(
@@ -685,15 +708,93 @@ class _HomeScreenState extends State<HomeScreen> {
685 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 파일 보기

@@ -7,10 +7,10 @@ import 'package:flutter/services.dart';
7 7
 import 'package:flutter_udid/flutter_udid.dart';
8 8
 import 'package:fluttertoast/fluttertoast.dart';
9 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 14
 import 'package:progress_dialog_null_safe/progress_dialog_null_safe.dart';
15 15
 import 'package:shared_preferences/shared_preferences.dart';
16 16
 import '../../firebase_options.dart';

+ 1
- 1
lib/Screens/Login/post_result_model.dart 파일 보기

@@ -2,7 +2,7 @@ import 'dart:convert';
2 2
 import 'dart:core';
3 3
 import 'dart:io' show Platform;
4 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 6
 import 'dart:developer' as developer;
7 7
 
8 8
 late String platformDevice;

+ 1
- 1
lib/Screens/Menu/Absensi/RequestHttp/checkIn_post.dart 파일 보기

@@ -1,7 +1,7 @@
1 1
 import 'dart:convert';
2 2
 import 'dart:core';
3 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 5
 import 'dart:developer' as developer;
6 6
 
7 7
 import 'package:shared_preferences/shared_preferences.dart';

+ 1
- 1
lib/Screens/Menu/Absensi/RequestHttp/checkOut_post.dart 파일 보기

@@ -1,7 +1,7 @@
1 1
 import 'dart:convert';
2 2
 import 'dart:core';
3 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 5
 import 'dart:developer' as developer;
6 6
 
7 7
 import 'package:shared_preferences/shared_preferences.dart';

+ 1
- 1
lib/Screens/Menu/Absensi/RequestHttp/checkStatus_post.dart 파일 보기

@@ -1,7 +1,7 @@
1 1
 import 'dart:convert';
2 2
 import 'dart:core';
3 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 5
 import 'dart:developer' as developer;
6 6
 
7 7
 import 'package:shared_preferences/shared_preferences.dart';

+ 1
- 1
lib/Screens/Menu/Absensi/RequestHttp/historyAbsensi_post.dart 파일 보기

@@ -1,7 +1,7 @@
1 1
 import 'dart:convert';
2 2
 import 'dart:core';
3 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 5
 import 'dart:developer' as developer;
6 6
 
7 7
 import 'package:shared_preferences/shared_preferences.dart';

+ 137
- 29
lib/Screens/Menu/Absensi/absensi_history_screen.dart 파일 보기

@@ -1,7 +1,9 @@
1 1
 import 'dart:convert';
2
+import 'package:firebase_core/firebase_core.dart';
3
+import 'package:firebase_crashlytics/firebase_crashlytics.dart';
2 4
 import 'package:flutter/material.dart';
3 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 7
 import 'package:intl/intl.dart';
6 8
 import 'package:progress_dialog_null_safe/progress_dialog_null_safe.dart';
7 9
 import 'dart:developer' as logDev;
@@ -36,6 +38,11 @@ class _HistoryAbsensi extends State<HistoryAbsensi> {
36 38
   //List Visibility Double Date
37 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 46
   @override
40 47
   initState() {
41 48
     super.initState();
@@ -54,6 +61,15 @@ class _HistoryAbsensi extends State<HistoryAbsensi> {
54 61
     showCheckOut_List = [""];
55 62
 
56 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 74
     WidgetsBinding.instance.addPostFrameCallback((_) async {
59 75
       getHistoryData();
@@ -97,26 +113,29 @@ class _HistoryAbsensi extends State<HistoryAbsensi> {
97 113
               String check_in = historyAbsensi[i]['check_in'].toString();
98 114
               String check_out = historyAbsensi[i]['check_out'].toString();
99 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 118
               double hours = double.parse(worked_hours);
103 119
 
120
+              //Jika Sudah Checkin
104 121
               if (check_in != "false"){
105 122
                 //Convert UTC to Local Time - Check In Time
106 123
                 DateTime checkInTime = DateFormat("yyyy-MM-dd HH:mm:ss").parse(check_in, true);
107 124
                 String showCheckInTime = checkInTime.toLocal().toString().substring(11, 19);
108 125
                 showCheckIn_List.add(showCheckInTime.substring(0,5));
126
+                //Jika belum check in
109 127
               } else if (check_in == "false"){
110 128
                 String show_check_in = "-";
111 129
                 showCheckIn_List.add(show_check_in);
112 130
               }
113 131
 
132
+              //Jika Sudah Checkout
114 133
               if (check_out != "false"){
115 134
                 //Convert UTC to Local Time - Check Out Time
116 135
                 DateTime checkOutTime = DateFormat("yyyy-MM-dd HH:mm:ss").parse(check_out, true);
117 136
                 String showCheckOutTime = checkOutTime.toLocal().toString().substring(11, 19);
118 137
                 showCheckOut_List.add(showCheckOutTime.substring(0,5));
119
-
138
+                //Jika tanggal check in sama dengan tanggal check out
120 139
                 if (check_in.substring(0, 10) == check_out.substring(0,10)){
121 140
                   //Get Day Check In
122 141
                   String dayDateIn = DateFormat('EEEE').format(DateTime.parse(check_in));
@@ -125,6 +144,14 @@ class _HistoryAbsensi extends State<HistoryAbsensi> {
125 144
                   dayDate_List.add(dayDateIn.substring(0,3));
126 145
                   date_List.add(dateIn);
127 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 155
                 } else if (check_in.substring(0, 10) != check_out.substring(0,10)){
129 156
                   //Get Day Check In & Check Out
130 157
                   String dayDateIn = DateFormat('EEEE').format(DateTime.parse(check_in));
@@ -135,10 +162,17 @@ class _HistoryAbsensi extends State<HistoryAbsensi> {
135 162
                   String dateOut = DateFormat('dd').format(DateTime.parse(check_out));
136 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 176
               } else if (check_out == "false"){
143 177
                 String show_check_out = "-";
144 178
                 showCheckOut_List.add(show_check_out);
@@ -149,15 +183,21 @@ class _HistoryAbsensi extends State<HistoryAbsensi> {
149 183
                 dayDate_List.add(dayDateIn.substring(0,3));
150 184
                 date_List.add(dateIn);
151 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 195
                 visibilityDate2.add(false);
156 196
               } else if (check_in == "false" && check_out == "false"){
157 197
                 visibilityDate2.add(false);
158 198
               } else if (check_in == "true" && check_out == "true"){
159 199
                 visibilityDate2.add(true);
160
-              }
200
+              }*/
161 201
 
162 202
               id_List.add(id);
163 203
               employee_name_List.add(employee_name);
@@ -181,6 +221,10 @@ class _HistoryAbsensi extends State<HistoryAbsensi> {
181 221
             showCheckOut_List.removeAt(0);
182 222
 
183 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 229
             HistoryLength = historyAbsensi.length;
186 230
           });
@@ -251,26 +295,86 @@ class _HistoryAbsensi extends State<HistoryAbsensi> {
251 295
                           child: Row(
252 296
                             children: [
253 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 379
                               Expanded(
276 380
                                 flex: 2,
@@ -393,4 +497,8 @@ alertDialogFailedResponse(BuildContext context){
393 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 파일 보기

@@ -5,14 +5,15 @@ import 'package:flutter/material.dart';
5 5
 import 'package:flutter_map/plugin_api.dart';
6 6
 import 'package:geolocator/geolocator.dart';
7 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 11
 import 'package:intl/intl.dart';
12 12
 import 'package:latlong2/latlong.dart' as latlong;
13 13
 import 'dart:developer' as logDev;
14 14
 
15 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 18
 import 'RequestHttp/checkOut_post.dart';
18 19
 import 'RequestHttp/historyAbsensi_post.dart';
@@ -41,6 +42,7 @@ class _AbsensiScreenState extends State<AbsensiScreen> {
41 42
   void initState() {
42 43
     showCheckIn_List = "";
43 44
     showCheckOut_List = "";
45
+
44 46
     WidgetsBinding.instance.addPostFrameCallback((_) {
45 47
       determinePosition();
46 48
     });
@@ -209,7 +211,7 @@ class _AbsensiScreenState extends State<AbsensiScreen> {
209 211
     bool serviceEnabled;
210 212
     LocationPermission permission;
211 213
 
212
-    loading.show();
214
+    //loading.show();
213 215
     serviceEnabled = await Geolocator.isLocationServiceEnabled();
214 216
     if (!serviceEnabled) {
215 217
       loading.hide();
@@ -376,317 +378,254 @@ class _AbsensiScreenState extends State<AbsensiScreen> {
376 378
     });
377 379
   }
378 380
 
381
+  PanelController _panelController = PanelController();
382
+
383
+  void togglePanel() => _panelController.isPanelOpen
384
+      ? _panelController.close()
385
+      : _panelController.open();
386
+
379 387
   @override
380 388
   Widget build(BuildContext context) {
381 389
     var size = MediaQuery.of(context).size;
382 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 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 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 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 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 파일 보기

@@ -1,7 +1,7 @@
1 1
 import 'dart:convert';
2 2
 import 'dart:core';
3 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 5
 import 'dart:developer' as developer;
6 6
 
7 7
 import 'package:shared_preferences/shared_preferences.dart';

+ 0
- 0
lib/Screens/Menu/AjukanCuti/RequestHttp/historyCuti_post.dart 파일 보기


이 변경점에서 너무 많은 파일들이 변경되어 몇몇 파일들은 표시되지 않았습니다.

Loading…
취소
저장