Fix local dev config and ALOTTTT OFF FLUTTER, im tired boss..
This commit is contained in:
+24
-22
@@ -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) {
|
||||
|
||||
+1
@@ -0,0 +1 @@
|
||||
export '../../navigation_mode_screen.dart';
|
||||
Reference in New Issue
Block a user