import 'package:google_maps_flutter/google_maps_flutter.dart'; // تم تعديل الدالة لتقبل وسيط من نوع `dynamic` لحل مشكلة عدم تطابق الأنواع مع دالة `compute`. // هذه الدالة لا تزال تعمل كدالة من المستوى الأعلى (Top-level function) // وهو شرط أساسي لاستخدامها مع دالة compute. List decodePolylineIsolate(dynamic encodedMessage) { // التأكد من أن الرسالة المستقبلة هي من نوع String if (encodedMessage is! String) { // إرجاع قائمة فارغة أو إظهار خطأ إذا كان النوع غير صحيح return []; } final String encoded = encodedMessage; List points = []; int index = 0, len = encoded.length; int lat = 0, lng = 0; while (index < len) { int b, shift = 0, result = 0; do { b = encoded.codeUnitAt(index++) - 63; result |= (b & 0x1f) << shift; shift += 5; } while (b >= 0x20); int dlat = ((result & 1) != 0 ? ~(result >> 1) : (result >> 1)); lat += dlat; shift = 0; result = 0; do { b = encoded.codeUnitAt(index++) - 63; result |= (b & 0x1f) << shift; shift += 5; } while (b >= 0x20); int dlng = ((result & 1) != 0 ? ~(result >> 1) : (result >> 1)); lng += dlng; points.add(LatLng(lat / 1E5, lng / 1E5)); } return points; }