initial commit
This commit is contained in:
+140
@@ -0,0 +1,140 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:geolocator/geolocator.dart';
|
||||
import 'package:geocoding/geocoding.dart';
|
||||
|
||||
void main() {
|
||||
runApp(const MyApp());
|
||||
}
|
||||
|
||||
class MyApp extends StatelessWidget {
|
||||
const MyApp({super.key});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return MaterialApp(
|
||||
title: 'Tugas 12 Geolocator & Geocoding',
|
||||
theme: ThemeData(primarySwatch: Colors.blue),
|
||||
home: const LocationScreen(),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class LocationScreen extends StatefulWidget {
|
||||
const LocationScreen({super.key});
|
||||
|
||||
@override
|
||||
State<LocationScreen> createState() => _LocationScreenState();
|
||||
}
|
||||
|
||||
class _LocationScreenState extends State<LocationScreen> {
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
jalankanTugas12();
|
||||
}
|
||||
|
||||
Future<void> jalankanTugas12() async {
|
||||
print('=== MEMULAI TUGAS 12 ===');
|
||||
await handleLocationPermission();
|
||||
|
||||
await ambilKoordinatSaatIni();
|
||||
|
||||
await cariKoordinatTelkomUniversity();
|
||||
|
||||
await konversiKoordinatKeAlamat();
|
||||
|
||||
print('=== SELESAI ===');
|
||||
}
|
||||
|
||||
// Fungsi pembantu untuk meminta izin lokasi perangkat
|
||||
Future<void> handleLocationPermission() async {
|
||||
bool serviceEnabled;
|
||||
LocationPermission permission;
|
||||
|
||||
serviceEnabled = await Geolocator.isLocationServiceEnabled();
|
||||
if (!serviceEnabled) {
|
||||
print('Layanan lokasi dinonaktifkan. Silakan aktifkan GPS Anda.');
|
||||
return;
|
||||
}
|
||||
|
||||
permission = await Geolocator.checkPermission();
|
||||
if (permission == LocationPermission.denied) {
|
||||
permission = await Geolocator.requestPermission();
|
||||
if (permission == LocationPermission.denied) {
|
||||
print('Izin lokasi ditolak.');
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (permission == LocationPermission.deniedForever) {
|
||||
print('Izin lokasi ditolak secara permanen.');
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> ambilKoordinatSaatIni() async {
|
||||
try {
|
||||
Position position = await Geolocator.getCurrentPosition(
|
||||
desiredAccuracy: LocationAccuracy.high,
|
||||
);
|
||||
print('\n[1] Koordinat Perangkat Saat Ini:');
|
||||
print('Latitude: ${position.latitude}');
|
||||
print('Longitude: ${position.longitude}');
|
||||
} catch (e) {
|
||||
print('Gagal mengambil lokasi saat ini: $e');
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> cariKoordinatTelkomUniversity() async {
|
||||
try {
|
||||
String alamatKampus = "Telkom University, Bandung, Indonesia";
|
||||
List<Location> locations = await locationFromAddress(alamatKampus);
|
||||
|
||||
if (locations.isNotEmpty) {
|
||||
print('\n[2] Koordinat Telkom University:');
|
||||
print('Latitude: ${locations.first.latitude}');
|
||||
print('Longitude: ${locations.first.longitude}');
|
||||
}
|
||||
} catch (e) {
|
||||
print('Gagal mencari koordinat Telkom University: $e');
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> konversiKoordinatKeAlamat() async {
|
||||
try {
|
||||
double targetLat = 52.2165157;
|
||||
double targetLng = 6.9437819;
|
||||
|
||||
List<Placemark> placemarks = await placemarkFromCoordinates(targetLat, targetLng);
|
||||
|
||||
if (placemarks.isNotEmpty) {
|
||||
Placemark tempat = placemarks.first;
|
||||
print('\n[3] Konversi Koordinat ($targetLat, $targetLng):');
|
||||
print('Nama Jalan : ${tempat.street}');
|
||||
print('Kota : ${tempat.locality}');
|
||||
print('Negara : ${tempat.country}');
|
||||
}
|
||||
} catch (e) {
|
||||
print('Gagal mengonversi koordinat menjadi alamat: $e');
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
appBar: AppBar(
|
||||
title: const Text('Tugas 12 - Geolocator & Geocoding'),
|
||||
),
|
||||
body: const Center(
|
||||
child: Padding(
|
||||
padding: EdgeInsets.all(16.0),
|
||||
child: Text(
|
||||
'Proses sedang berjalan.\nSilakan cek Debug Console!',
|
||||
textAlign: TextAlign.center,
|
||||
style: TextStyle(fontSize: 16),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user