Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
C
Crm Attendance
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Dio Maulana
Crm Attendance
Commits
53de4163
Commit
53de4163
authored
Jun 02, 2023
by
Dio Maulana
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
aktif geo location
parent
67ff122f
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
288 additions
and
48 deletions
+288
-48
error_args.dart
lib/helper/arguments/error_args.dart
+5
-0
pref.dart
lib/helper/pref.dart
+20
-0
main.dart
lib/main.dart
+25
-1
absent_camera.dart
lib/page/absent_camera/absent_camera.dart
+9
-1
error_camera.dart
lib/page/error/error_camera.dart
+0
-38
error_widget.dart
lib/page/error/error_widget.dart
+86
-0
onboarding.dart
lib/page/onboarding/onboarding.dart
+24
-2
routes.dart
lib/resource/routes.dart
+41
-6
strings.dart
lib/resource/strings.dart
+6
-0
GeneratedPluginRegistrant.swift
macos/Flutter/GeneratedPluginRegistrant.swift
+2
-0
pubspec.lock
pubspec.lock
+64
-0
pubspec.yaml
pubspec.yaml
+2
-0
generated_plugin_registrant.cc
windows/flutter/generated_plugin_registrant.cc
+3
-0
generated_plugins.cmake
windows/flutter/generated_plugins.cmake
+1
-0
No files found.
lib/helper/arguments/error_args.dart
0 → 100644
View file @
53de4163
class
ErrorWidgetArguments
{
String
errorMessage
;
ErrorWidgetArguments
({
required
this
.
errorMessage
});
}
lib/helper/pref.dart
0 → 100644
View file @
53de4163
import
'package:excelso_attendance/main.dart'
;
const
String
_latitude
=
'laU'
;
const
String
_longitude
=
'loU'
;
String
?
getLatitude
()
{
return
prefs
.
getString
(
_latitude
);
}
Future
<
void
>
setLatitude
(
String
value
)
async
{
prefs
.
setString
(
_latitude
,
value
);
}
String
?
getLongitude
()
{
return
prefs
.
getString
(
_longitude
);
}
Future
<
void
>
setLongitude
(
String
value
)
async
{
prefs
.
setString
(
_longitude
,
value
);
}
lib/main.dart
View file @
53de4163
import
'package:excelso_attendance/resource/routes.dart'
;
import
'package:flutter/material.dart'
;
import
'package:flutter_easyloading/flutter_easyloading.dart'
;
import
'package:shared_preferences/shared_preferences.dart'
;
import
'package:url_strategy/url_strategy.dart'
;
bool
debug
=
true
;
late
SharedPreferences
prefs
;
String
titleApp
=
'Excelso Attendances'
;
// final GlobalKey<NavigatorState> navigatorKey = GlobalKey<NavigatorState>();
void
main
(
)
async
{
WidgetsFlutterBinding
.
ensureInitialized
();
setPathUrlStrategy
();
configLoading
();
SharedPreferences
.
getInstance
().
then
((
value
)
{
prefs
=
value
;
runApp
(
const
MyApp
());
});
}
runApp
(
const
MyApp
());
//easy loading
void
configLoading
(
)
{
EasyLoading
.
instance
..
displayDuration
=
const
Duration
(
milliseconds:
2000
)
..
indicatorType
=
EasyLoadingIndicatorType
.
fadingCircle
..
loadingStyle
=
EasyLoadingStyle
.
dark
..
indicatorSize
=
45.0
..
radius
=
10.0
..
progressColor
=
Colors
.
yellow
..
backgroundColor
=
Colors
.
green
..
indicatorColor
=
Colors
.
yellow
..
textColor
=
Colors
.
yellow
..
maskColor
=
Colors
.
blue
.
withOpacity
(
0.5
)
..
userInteractions
=
true
..
dismissOnTap
=
false
;
}
class
MyApp
extends
StatelessWidget
{
...
...
@@ -23,9 +45,11 @@ class MyApp extends StatelessWidget {
Widget
build
(
BuildContext
context
)
{
return
MaterialApp
(
title:
titleApp
,
// navigatorKey: navigatorKey,
debugShowCheckedModeBanner:
false
,
onGenerateRoute:
RouteGenerator
.
getRoute
,
initialRoute:
Routes
.
onBoarding
,
builder:
EasyLoading
.
init
(),
);
}
}
lib/page/absent_camera/absent_camera.dart
View file @
53de4163
...
...
@@ -2,9 +2,11 @@
import
'dart:async'
;
import
'dart:io'
;
import
'package:excelso_attendance/helper/arguments/error_args.dart'
;
import
'package:excelso_attendance/helper/widget_responsive.dart'
;
import
'package:excelso_attendance/main.dart'
;
import
'package:excelso_attendance/resource/routes.dart'
;
import
'package:excelso_attendance/resource/strings.dart'
;
import
'package:flutter/foundation.dart'
show
kIsWeb
;
import
'dart:typed_data'
;
...
...
@@ -94,7 +96,13 @@ class _AbsentCameraViewState extends State<AbsentCameraView> {
// isPermissionAccept = false;
// });
Navigator
.
pushNamedAndRemoveUntil
(
context
,
Routes
.
errorCamera
,
(
route
)
=>
false
);
context
,
Routes
.
errorWidget
,
(
route
)
=>
false
,
arguments:
ErrorWidgetArguments
(
errorMessage:
Strings
.
cameraNotActive
,
),
);
default
:
// setState(() {
// errorCamera = "$e";
...
...
lib/page/error/error_camera.dart
deleted
100644 → 0
View file @
67ff122f
// ignore_for_file: sized_box_for_whitespace
import
'package:excelso_attendance/helper/widget_responsive.dart'
;
import
'package:excelso_attendance/resource/colors.dart'
;
import
'package:excelso_attendance/resource/style.dart'
;
import
'package:flutter/material.dart'
;
class
ErrorCameraView
extends
StatelessWidget
{
const
ErrorCameraView
({
super
.
key
});
@override
Widget
build
(
BuildContext
context
)
{
return
Scaffold
(
backgroundColor:
ColorManager
.
backgroundColor
,
body:
ScreenResponsive
(
widget:
Container
(
width:
double
.
infinity
,
height:
double
.
infinity
,
child:
Column
(
mainAxisAlignment:
MainAxisAlignment
.
center
,
crossAxisAlignment:
CrossAxisAlignment
.
center
,
children:
[
Text
(
"Silakan aktifkan permission kamera pada pengaturan browser anda"
,
style:
getBoldStyle
(
color:
Colors
.
black
,
fontSize:
16
,
),
textAlign:
TextAlign
.
center
,
),
],
),
),
widthScreen:
MediaQuery
.
of
(
context
).
size
.
width
,
),
);
}
}
lib/page/error/error_widget.dart
0 → 100644
View file @
53de4163
// ignore_for_file: sized_box_for_whitespace
import
'package:excelso_attendance/helper/component/button.dart'
;
import
'package:excelso_attendance/helper/widget_responsive.dart'
;
import
'package:excelso_attendance/main.dart'
;
import
'package:excelso_attendance/resource/colors.dart'
;
import
'package:excelso_attendance/resource/size.dart'
;
import
'package:excelso_attendance/resource/strings.dart'
;
import
'package:excelso_attendance/resource/style.dart'
;
import
'package:flutter/material.dart'
;
import
'package:flutter_easyloading/flutter_easyloading.dart'
;
import
'package:geolocator/geolocator.dart'
;
class
ErrorWidgetView
extends
StatelessWidget
{
const
ErrorWidgetView
({
super
.
key
,
required
this
.
messageError
});
final
String
messageError
;
@override
Widget
build
(
BuildContext
context
)
{
return
Scaffold
(
backgroundColor:
ColorManager
.
backgroundColor
,
body:
ScreenResponsive
(
widget:
Container
(
width:
double
.
infinity
,
height:
double
.
infinity
,
child:
Column
(
mainAxisAlignment:
MainAxisAlignment
.
center
,
crossAxisAlignment:
CrossAxisAlignment
.
center
,
children:
[
Container
(
margin:
EdgeInsets
.
symmetric
(
horizontal:
AppMargin
.
m20
),
child:
const
Icon
(
Icons
.
dangerous_outlined
,
color:
Colors
.
red
,
size:
150
,
),
),
Padding
(
padding:
EdgeInsets
.
symmetric
(
horizontal:
AppPadding
.
p20
,
),
child:
Text
(
messageError
,
style:
getBoldStyle
(
color:
Colors
.
black
,
fontSize:
16
,
),
textAlign:
TextAlign
.
center
,
),
),
(
messageError
==
Strings
.
locationNotActive
)
?
GestureDetector
(
onTap:
()
{
Geolocator
.
requestPermission
().
then
((
value
)
async
{
if
(
value
!=
LocationPermission
.
denied
&&
value
!=
LocationPermission
.
deniedForever
)
{
// ignore: use_build_context_synchronously
Navigator
.
pushReplacement
(
context
,
MaterialPageRoute
(
builder:
(
_
)
=>
const
MyApp
(),
),
);
}
else
{
EasyLoading
.
showToast
(
'Silakan aktifkan lokasi browser anda'
);
return
;
}
});
},
child:
Container
(
margin:
EdgeInsets
.
only
(
top:
15
,
left:
AppMargin
.
m20
,
right:
AppMargin
.
m20
),
child:
const
CustomButton
(
text:
"Refresh Halaman"
),
),
)
:
const
SizedBox
()
],
),
),
widthScreen:
MediaQuery
.
of
(
context
).
size
.
width
,
),
);
}
}
lib/page/onboarding/onboarding.dart
View file @
53de4163
import
'package:excelso_attendance/helper/arguments/error_args.dart'
;
import
'package:excelso_attendance/helper/pref.dart'
;
import
'package:excelso_attendance/helper/widget_responsive.dart'
;
import
'package:excelso_attendance/resource/assets.dart'
;
import
'package:excelso_attendance/resource/colors.dart'
;
import
'package:excelso_attendance/resource/font.dart'
;
import
'package:excelso_attendance/resource/routes.dart'
;
import
'package:excelso_attendance/resource/size.dart'
;
import
'package:excelso_attendance/resource/strings.dart'
;
import
'package:excelso_attendance/resource/style.dart'
;
import
'package:flutter/material.dart'
;
import
'package:geolocator/geolocator.dart'
;
// ignore: avoid_web_libraries_in_flutter
import
'dart:html'
as
html
;
//
import 'dart:html' as html;
class
OnBoardingView
extends
StatefulWidget
{
const
OnBoardingView
({
super
.
key
});
...
...
@@ -32,7 +36,25 @@ class _OnBoardingViewState extends State<OnBoardingView> {
}
void
getUserPermission
()
async
{
await
html
.
window
.
navigator
.
getUserMedia
(
audio:
true
,
video:
true
);
LocationPermission
permission
=
await
Geolocator
.
requestPermission
();
if
(
permission
==
LocationPermission
.
always
||
permission
==
LocationPermission
.
whileInUse
)
{
Geolocator
.
getCurrentPosition
().
then
((
position
)
{
setLatitude
(
position
.
latitude
.
toString
());
setLongitude
(
position
.
longitude
.
toString
());
});
}
else
{
// ignore: use_build_context_synchronously
Navigator
.
pushNamedAndRemoveUntil
(
context
,
Routes
.
errorWidget
,
(
route
)
=>
false
,
arguments:
ErrorWidgetArguments
(
errorMessage:
Strings
.
locationNotActive
,
),
);
}
// await html.window.navigator.getUserMedia(audio: true, video: true);
}
@override
...
...
lib/resource/routes.dart
View file @
53de4163
import
'package:excelso_attendance/helper/arguments/error_args.dart'
;
import
'package:excelso_attendance/helper/arguments/route_args.dart'
;
import
'package:excelso_attendance/main.dart'
;
import
'package:excelso_attendance/page/absent_camera/absent_camera.dart'
;
import
'package:excelso_attendance/page/absent_success/absent_success.dart'
;
import
'package:excelso_attendance/page/error/error_
camera
.dart'
;
import
'package:excelso_attendance/page/error/error_
widget
.dart'
;
import
'package:excelso_attendance/page/home/home.dart'
;
import
'package:excelso_attendance/page/onboarding/onboarding.dart'
;
import
'package:flutter/material.dart'
;
...
...
@@ -13,7 +14,7 @@ class Routes {
static
const
String
home
=
"/home"
;
static
const
String
absentCamera
=
"/absent-camera"
;
static
const
String
absentSuccess
=
"/absent-success"
;
static
const
String
error
Camera
=
"/error-camera
"
;
static
const
String
error
Widget
=
"/error
"
;
}
class
RouteGenerator
{
...
...
@@ -38,9 +39,16 @@ class RouteGenerator {
case
Routes
.
absentSuccess
:
return
pageRouteCustom
(
const
AbsentSuccessView
(),
nameRoute:
Routes
.
absentSuccess
);
case
Routes
.
errorCamera
:
return
pageRouteCustom
(
const
ErrorCameraView
(),
nameRoute:
Routes
.
errorCamera
);
case
Routes
.
errorWidget
:
ErrorWidgetArguments
args
=
routeSettings
.
arguments
as
ErrorWidgetArguments
;
return
pageRouteCustom
(
ErrorWidgetView
(
messageError:
args
.
errorMessage
,
),
nameRoute:
Routes
.
errorWidget
,
routeSettings:
routeSettings
,
);
default
:
return
unDefinedRoute
();
}
...
...
@@ -72,7 +80,34 @@ class RouteGenerator {
// settings: RouteSettings(
// name: nameRoute.replaceFirst("/", ""), arguments: args),
);
}
else
{
}
if
(
nameRoute
==
Routes
.
errorWidget
)
{
ErrorWidgetArguments
args
=
routeSettings
!.
arguments
as
ErrorWidgetArguments
;
return
PageRouteBuilder
(
pageBuilder:
(
context
,
a
,
b
)
=>
ErrorWidgetView
(
messageError:
args
.
errorMessage
,
),
transitionDuration:
Duration
.
zero
,
reverseTransitionDuration:
Duration
.
zero
,
// settings: RouteSettings(
// name: nameRoute.replaceFirst("/", ""), arguments: args),
);
}
// else if (nameRoute == Routes.errorWidget) {
// ErrorWidgetArguments args =
// routeSettings!.arguments as ErrorWidgetArguments;
// return PageRouteBuilder(
// pageBuilder: (context, a, b) => ErrorWidgetView(
// messageError: args.errorMessage,
// ),
// transitionDuration: Duration.zero,
// reverseTransitionDuration: Duration.zero,
// // settings: RouteSettings(
// // name: nameRoute.replaceFirst("/", ""), arguments: args),
// );
// }
else
{
return
PageRouteBuilder
(
pageBuilder:
(
context
,
a
,
b
)
=>
target
,
transitionDuration:
Duration
.
zero
,
...
...
lib/resource/strings.dart
0 → 100644
View file @
53de4163
class
Strings
{
static
String
cameraNotActive
=
"Silakan aktifkan permission kamera pada pengaturan browser anda"
;
static
String
locationNotActive
=
"Silakan aktifkan permission lokasi pada pengaturan browser anda"
;
}
macos/Flutter/GeneratedPluginRegistrant.swift
View file @
53de4163
...
...
@@ -5,8 +5,10 @@
import
FlutterMacOS
import
Foundation
import
geolocator_apple
import
shared_preferences_foundation
func
RegisterGeneratedPlugins
(
registry
:
FlutterPluginRegistry
)
{
GeolocatorPlugin
.
register
(
with
:
registry
.
registrar
(
forPlugin
:
"GeolocatorPlugin"
))
SharedPreferencesPlugin
.
register
(
with
:
registry
.
registrar
(
forPlugin
:
"SharedPreferencesPlugin"
))
}
pubspec.lock
View file @
53de4163
...
...
@@ -166,6 +166,14 @@ packages:
description: flutter
source: sdk
version: "0.0.0"
flutter_easyloading:
dependency: "direct main"
description:
name: flutter_easyloading
sha256: ba21a3c883544e582f9cc455a4a0907556714e1e9cf0eababfcb600da191d17c
url: "https://pub.dev"
source: hosted
version: "3.0.5"
flutter_lints:
dependency: "direct dev"
description:
...
...
@@ -190,6 +198,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "2.0.15"
flutter_spinkit:
dependency: transitive
description:
name: flutter_spinkit
sha256: b39c753e909d4796906c5696a14daf33639a76e017136c8d82bf3e620ce5bb8e
url: "https://pub.dev"
source: hosted
version: "5.2.0"
flutter_test:
dependency: "direct dev"
description: flutter
...
...
@@ -200,6 +216,54 @@ packages:
description: flutter
source: sdk
version: "0.0.0"
geolocator:
dependency: "direct main"
description:
name: geolocator
sha256: "5c23f3613f50586c0bbb2b8f970240ae66b3bd992088cf60dd5ee2e6f7dde3a8"
url: "https://pub.dev"
source: hosted
version: "9.0.2"
geolocator_android:
dependency: transitive
description:
name: geolocator_android
sha256: "6cd3c622df085a79fd61f5c14fa024c3ba593aa6b1df2ee809ac59f45e6a9861"
url: "https://pub.dev"
source: hosted
version: "4.1.8"
geolocator_apple:
dependency: transitive
description:
name: geolocator_apple
sha256: "22b60ca3b8c0f58e6a9688ff855ee39ab813ca3f0c0609a48d282f6631266f2e"
url: "https://pub.dev"
source: hosted
version: "2.2.5"
geolocator_platform_interface:
dependency: transitive
description:
name: geolocator_platform_interface
sha256: af4d69231452f9620718588f41acc4cb58312368716bfff2e92e770b46ce6386
url: "https://pub.dev"
source: hosted
version: "4.0.7"
geolocator_web:
dependency: transitive
description:
name: geolocator_web
sha256: f68a122da48fcfff68bbc9846bb0b74ef651afe84a1b1f6ec20939de4d6860e1
url: "https://pub.dev"
source: hosted
version: "2.1.6"
geolocator_windows:
dependency: transitive
description:
name: geolocator_windows
sha256: f5911c88e23f48b598dd506c7c19eff0e001645bdc03bb6fecb9f4549208354d
url: "https://pub.dev"
source: hosted
version: "0.1.1"
html:
dependency: transitive
description:
...
...
pubspec.yaml
View file @
53de4163
...
...
@@ -33,7 +33,9 @@ dependencies:
cupertino_icons
:
^1.0.2
flutter
:
sdk
:
flutter
flutter_easyloading
:
^3.0.5
flutter_native_splash
:
^2.3.0
geolocator
:
^9.0.2
http
:
^0.13.5
shared_preferences
:
^2.1.1
url_strategy
:
^0.2.0
...
...
windows/flutter/generated_plugin_registrant.cc
View file @
53de4163
...
...
@@ -6,6 +6,9 @@
#include "generated_plugin_registrant.h"
#include <geolocator_windows/geolocator_windows.h>
void
RegisterPlugins
(
flutter
::
PluginRegistry
*
registry
)
{
GeolocatorWindowsRegisterWithRegistrar
(
registry
->
GetRegistrarForPlugin
(
"GeolocatorWindows"
));
}
windows/flutter/generated_plugins.cmake
View file @
53de4163
...
...
@@ -3,6 +3,7 @@
#
list
(
APPEND FLUTTER_PLUGIN_LIST
geolocator_windows
)
list
(
APPEND FLUTTER_FFI_PLUGIN_LIST
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment