Fix local dev config and ALOTTTT OFF FLUTTER, im tired boss..

This commit is contained in:
Wowieee4
2026-05-26 21:09:13 +07:00
parent b8ad8df993
commit a629357e8c
72 changed files with 2566 additions and 530 deletions
@@ -16,6 +16,7 @@ import 'package:latlong2/latlong.dart';
import '../../app/injection_container.dart';
import '../../core/network/api_client.dart';
import '../../core/services/tts_service.dart';
import '../../core/utils/operation_guard.dart';
// ─── helpers ────────────────────────────────────────────────────────────────
@@ -70,7 +71,8 @@ class _NavState extends Cubit<int> {
// ── locate ──────────────────────────────────────────────────────────────
Future<bool> locate() async {
_set(_NavPhase.locating, 'Mencari lokasi GPS…');
try {
final located = await guarded<bool>(
() async {
LocationPermission perm = await Geolocator.checkPermission();
if (perm == LocationPermission.denied) {
perm = await Geolocator.requestPermission();
@@ -86,14 +88,12 @@ class _NavState extends Cubit<int> {
_set(_NavPhase.idle, 'Lokasi ditemukan. Cari tujuan atau ketuk peta.');
_reportToBackend(pos);
return true;
} on TimeoutException {
_set(_NavPhase.error, 'GPS timeout. Pastikan GPS aktif.');
return false;
} catch (e) {
_set(_NavPhase.error,
'Lokasi belum bisa dibaca. Pastikan GPS dan izin lokasi aktif.');
return false;
}
},
onTimeout: () => _set(_NavPhase.error, 'GPS timeout. Pastikan GPS aktif.'),
onError: (_) => _set(_NavPhase.error,
'Lokasi belum bisa dibaca. Pastikan GPS dan izin lokasi aktif.'),
);
return located ?? false;
}
void _reportToBackend(Position pos) {
@@ -112,7 +112,8 @@ class _NavState extends Cubit<int> {
// ── search Nominatim ─────────────────────────────────────────────────────
Future<List<_Place>> searchPlaces(String query) async {
if (query.trim().isEmpty) return const [];
try {
return await guarded<List<_Place>>(
() async {
final res = await Dio().get(
'https://nominatim.openstreetmap.org/search',
queryParameters: {
@@ -137,9 +138,8 @@ class _NavState extends Cubit<int> {
position: LatLng(lat, lng),
);
}).toList();
} catch (_) {
return const [];
}
},
) ?? const [];
}
String _viewbox(LatLng c) =>
@@ -147,7 +147,8 @@ class _NavState extends Cubit<int> {
// ── reverse geocode ──────────────────────────────────────────────────────
Future<String> reverseGeocode(LatLng pos) async {
try {
return await guarded<String>(
() async {
final res = await Dio().get(
'https://nominatim.openstreetmap.org/reverse',
queryParameters: {
@@ -162,9 +163,9 @@ class _NavState extends Cubit<int> {
);
return res.data['display_name']?.toString() ??
'${pos.latitude.toStringAsFixed(5)}, ${pos.longitude.toStringAsFixed(5)}';
} catch (_) {
return '${pos.latitude.toStringAsFixed(5)}, ${pos.longitude.toStringAsFixed(5)}';
}
},
) ??
'${pos.latitude.toStringAsFixed(5)}, ${pos.longitude.toStringAsFixed(5)}';
}
// ── OSRM routing ─────────────────────────────────────────────────────────
@@ -177,7 +178,8 @@ class _NavState extends Cubit<int> {
_set(_NavPhase.routing, 'Menghitung rute ke ${_shortName(dest)}…');
final origin = currentPosition!;
try {
await guarded<void>(
() async {
final url = 'http://router.project-osrm.org/route/v1/foot/'
'${origin.longitude},${origin.latitude};'
'${dest.position.longitude},${dest.position.latitude}'
@@ -219,10 +221,10 @@ class _NavState extends Cubit<int> {
steps.isNotEmpty ? steps[0].instruction : 'Ikuti rute biru.');
_notify();
_startTracking();
} catch (e) {
_set(_NavPhase.error,
'Gagal mendapat rute. Periksa koneksi lalu coba lagi.');
}
},
onError: (_) => _set(_NavPhase.error,
'Gagal mendapat rute. Periksa koneksi lalu coba lagi.'),
);
}
String _shortName(_Place p) {
@@ -0,0 +1 @@
export '../../navigation_mode_screen.dart';