3. import asset, proses login google mail
This commit is contained in:
160
lib/test_map.dart
Normal file
160
lib/test_map.dart
Normal file
@@ -0,0 +1,160 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:geolocator/geolocator.dart';
|
||||
import 'package:geocoding/geocoding.dart';
|
||||
|
||||
class TestMap extends StatefulWidget {
|
||||
const TestMap({super.key});
|
||||
|
||||
@override
|
||||
State<TestMap> createState() => _TestMapState();
|
||||
}
|
||||
|
||||
class _TestMapState extends State<TestMap> {
|
||||
/// Determine the current position of the device.
|
||||
///
|
||||
/// When the location services are not enabled or permissions
|
||||
/// are denied the `Future` will return an error.
|
||||
Future<Map<String, dynamic>> determinePosition() async {
|
||||
bool serviceEnabled;
|
||||
LocationPermission permission;
|
||||
|
||||
// Test if location services are enabled.
|
||||
serviceEnabled = await Geolocator.isLocationServiceEnabled();
|
||||
if (!serviceEnabled) {
|
||||
// Location services are not enabled don't continue
|
||||
// accessing the position and request users of the
|
||||
// App to enable the location services.
|
||||
return Future.error('Location services are disabled.');
|
||||
}
|
||||
|
||||
permission = await Geolocator.checkPermission();
|
||||
if (permission == LocationPermission.denied) {
|
||||
permission = await Geolocator.requestPermission();
|
||||
if (permission == LocationPermission.denied) {
|
||||
// Permissions are denied, next time you could try
|
||||
// requesting permissions again (this is also where
|
||||
// Android's shouldShowRequestPermissionRationale
|
||||
// returned true. According to Android guidelines
|
||||
// your App should show an explanatory UI now.
|
||||
// return Future.error('Location permissions are denied');
|
||||
|
||||
return {
|
||||
"message": "Ijinkan Lokasi di HP",
|
||||
"error": true,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
if (permission == LocationPermission.deniedForever) {
|
||||
// Permissions are denied forever, handle appropriately.
|
||||
// return Future.error(
|
||||
// 'Location permissions are permanently denied, we cannot request permissions.');
|
||||
return {
|
||||
"message": "Ijinkan Lokasi di HP",
|
||||
"error": true,
|
||||
};
|
||||
}
|
||||
|
||||
// When we reach here, permissions are granted and we can
|
||||
// continue accessing the position of the device.
|
||||
Position position = await Geolocator.getCurrentPosition();
|
||||
|
||||
return {
|
||||
"position": position,
|
||||
"message": "Berhasil mendapatkan posisi",
|
||||
"error": false
|
||||
};
|
||||
}
|
||||
|
||||
String latitude = "";
|
||||
String longitude = "";
|
||||
String addressFromCoordinat = "";
|
||||
String jarak = "";
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
appBar: AppBar(
|
||||
title: Text('Test Map'),
|
||||
),
|
||||
body: SafeArea(
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.all(8.0),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
(latitude.isNotEmpty && longitude.isNotEmpty)
|
||||
? Text('Coordinat Akhir: $latitude , $longitude')
|
||||
: SizedBox.shrink(),
|
||||
(addressFromCoordinat.isNotEmpty)
|
||||
? Text('Address : $addressFromCoordinat')
|
||||
: SizedBox.shrink(),
|
||||
(jarak.isNotEmpty) ? Text('Jarak : $jarak') : SizedBox.shrink(),
|
||||
SizedBox(
|
||||
height: 10,
|
||||
),
|
||||
Text('SFA Klodran : -7.5350973, 110.7921524'),
|
||||
SizedBox(
|
||||
height: 10,
|
||||
),
|
||||
ElevatedButton(
|
||||
child: Text('Determine Position'),
|
||||
onPressed: () async {
|
||||
print('ABSENSI');
|
||||
Map<String, dynamic> posx = await determinePosition();
|
||||
print('${posx}');
|
||||
|
||||
if (posx['error'] == false) {
|
||||
Position position = posx['position'];
|
||||
List<Placemark> placemarks = await placemarkFromCoordinates(
|
||||
position.latitude, position.longitude);
|
||||
print('placemark : ${placemarks}');
|
||||
|
||||
double jarakx = await Geolocator.distanceBetween(-7.5350973,
|
||||
110.7921524, position.latitude, position.longitude);
|
||||
|
||||
setState(() {
|
||||
jarak = jarakx.toString() + " meter";
|
||||
longitude = position.longitude.toString();
|
||||
latitude = position.latitude.toString();
|
||||
addressFromCoordinat = placemarks[0].street.toString() +
|
||||
" , " +
|
||||
placemarks[0].subLocality.toString() +
|
||||
" , " +
|
||||
placemarks[0].locality.toString() +
|
||||
" , " +
|
||||
placemarks[0].postalCode.toString() +
|
||||
" , " +
|
||||
placemarks[0].country.toString();
|
||||
});
|
||||
} else {
|
||||
setState(() {
|
||||
longitude = "";
|
||||
addressFromCoordinat = "";
|
||||
jarak = "";
|
||||
latitude = posx['message'].toString();
|
||||
});
|
||||
}
|
||||
},
|
||||
),
|
||||
SizedBox(
|
||||
height: 20,
|
||||
),
|
||||
ElevatedButton(
|
||||
onPressed: () {
|
||||
setState(() {
|
||||
latitude = "";
|
||||
longitude = "";
|
||||
addressFromCoordinat = "";
|
||||
jarak = "";
|
||||
});
|
||||
},
|
||||
child: Text('Clear'),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user