import 'package:flutter/services.dart'; class CarPlatformBridge { CarPlatformBridge._(); static const _channel = MethodChannel('com.siro.siro_driver/car_navigation'); static bool _isInitialized = false; static void ensureInitialized() { if (_isInitialized) return; _channel.setMethodCallHandler(_handleMethodCall); _isInitialized = true; } static Future _handleMethodCall(MethodCall call) async { switch (call.method) { case 'isCarAppConnected': return false; default: throw MissingPluginException(); } } static Future updateNavState({ required double lat, required double lng, required double bearing, required double speed, required String instruction, required double distanceToStep, required double totalDistance, required double eta, required int maneuver, required bool isNavigating, bool isMapDarkMode = false, }) async { try { await _channel.invokeMethod('updateNavState', { 'lat': lat, 'lng': lng, 'bearing': bearing, 'speed': speed, 'instruction': instruction, 'distanceToStep': distanceToStep, 'totalDistance': totalDistance, 'eta': eta, 'maneuver': maneuver, 'isNavigating': isNavigating, 'isMapDarkMode': isMapDarkMode, }); } catch (_) {} } static Future updateLocation({ required double lat, required double lng, required double bearing, required double speed, }) async { try { await _channel.invokeMethod('updateLocation', { 'lat': lat, 'lng': lng, 'bearing': bearing, 'speed': speed, }); } catch (_) {} } static Future updateInstruction({ required String instruction, required int maneuver, required double distanceToStep, }) async { try { await _channel.invokeMethod('updateInstruction', { 'instruction': instruction, 'maneuver': maneuver, 'distanceToStep': distanceToStep, }); } catch (_) {} } static Future stopNavigation() async { try { await _channel.invokeMethod('stopNavigation'); } catch (_) {} } }