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 createState() => _LocationScreenState(); } class _LocationScreenState extends State { @override void initState() { super.initState(); jalankanTugas12(); } Future jalankanTugas12() async { print('=== MEMULAI TUGAS 12 ==='); await handleLocationPermission(); await ambilKoordinatSaatIni(); await cariKoordinatTelkomUniversity(); await konversiKoordinatKeAlamat(); print('=== SELESAI ==='); } // Fungsi pembantu untuk meminta izin lokasi perangkat Future 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 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 cariKoordinatTelkomUniversity() async { try { String alamatKampus = "Telkom University, Bandung, Indonesia"; List 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 konversiKoordinatKeAlamat() async { try { double targetLat = 52.2165157; double targetLng = 6.9437819; List 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), ), ), ), ); } }