Files
2026-06-03 19:52:36 +07:00

140 lines
3.8 KiB
Dart

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),
),
),
),
);
}
}