fix(apps): سقوط أصلي عند تحميل الخريطة — ستايل map-saas بلا sprite
## العطل libc++abi: terminating due to uncaught exception of type std::domain_error بلا أي استثناء دارتي — سقوط أصلي بحت بعد «Using remote style URL» مباشرة. ## السبب فحص الستايل البعيد مباشرةً: /api/maps/style.json?theme=light → 68 طبقة، منها 12 طبقة symbol تستعمل icon-image، و **لا sprite معرَّف في الملف إطلاقاً**. MapLibre الأصلي يرمي std::domain_error عند طبقة أيقونات بلا sprite تحلّها. ⚠️ الستايل المرفق بالحزمة نفسها مصابٌ بالعيب ذاته (sprite غائب + 12 طبقة)، فلا الافتراضي ولا البعيد صالحان. ستايلها الليلي وحده سليم. ## العلاج التحوّل إلى assets/style.json و assets/style_dark.json المنقولين من سيرو الميداني: بهما sprite صحيح، وبلاطاتهما من tiles.intaleqapp.com نفسها، ويقلعان بلا انتظار شبكة — وهو ما يعنيه «الشكل حتمي من أول إقلاع» (docs/26 §1). نُسخ الملفان لتطبيق السائق أيضاً. ## الإصلاح الجذري (خادم، خارج هذا الكوميت) إضافة sprite لستايل map-saas البعيد أو إزالة طبقات الأيقونات منه. docs/23 §13 وُسّع بالقاعدة وسببها. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
da5cfab38e
commit
6ea213629c
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -83,6 +83,10 @@ class _RideMapState extends State<RideMap> {
|
|||||||
|
|
||||||
static const _fallback = im.LatLng(31.9539, 35.9106); // عمّان
|
static const _fallback = im.LatLng(31.9539, 35.9106); // عمّان
|
||||||
|
|
||||||
|
/// الستايلان مرفقان في `assets/` — منقولان من سيرو الميداني.
|
||||||
|
static const _lightStyleAsset = 'assets/style.json';
|
||||||
|
static const _darkStyleAsset = 'assets/style_dark.json';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void didUpdateWidget(RideMap old) {
|
void didUpdateWidget(RideMap old) {
|
||||||
super.didUpdateWidget(old);
|
super.didUpdateWidget(old);
|
||||||
@@ -200,9 +204,17 @@ class _RideMapState extends State<RideMap> {
|
|||||||
|
|
||||||
// الخريطة تبدّل ستايلها مع الثيم — خريطة نهارية في وضع ليلي تكسر
|
// الخريطة تبدّل ستايلها مع الثيم — خريطة نهارية في وضع ليلي تكسر
|
||||||
// الغرض (docs/26 §2). وتبديله يهدم مديري التعليقات، فيُصفَّر العَلَم.
|
// الغرض (docs/26 §2). وتبديله يهدم مديري التعليقات، فيُصفَّر العَلَم.
|
||||||
final styleUrl = isDark
|
//
|
||||||
? im.IntaleqStyles.obsidian(AppConfig.mapApiKey)
|
// ⚠️ **ستايل محلّي لا بعيد.** ستايل map-saas البعيد
|
||||||
: im.IntaleqStyles.light(AppConfig.mapApiKey);
|
// (`/api/maps/style.json?theme=light`) فيه **12 طبقة `symbol` تستعمل
|
||||||
|
// `icon-image` بلا `sprite` معرَّف** — وMapLibre الأصلي يرمي عندها
|
||||||
|
// `std::domain_error` فيُسقط التطبيق قبل أن يظهر إطار واحد
|
||||||
|
// (مثبت 2026-08-05). الستايلان المرفقان في `assets/` سليمان: بهما
|
||||||
|
// `sprite` وبلاطاتهما من `tiles.intaleqapp.com` نفسها.
|
||||||
|
//
|
||||||
|
// ومعها نكسب الإقلاع بلا انتظار شبكة — وهو ما يعنيه «الشكل حتمي من أول
|
||||||
|
// إقلاع» (docs/26 §1).
|
||||||
|
final styleUrl = isDark ? _darkStyleAsset : _lightStyleAsset;
|
||||||
if (_styleUrl != null && _styleUrl != styleUrl) _styleReady = false;
|
if (_styleUrl != null && _styleUrl != styleUrl) _styleReady = false;
|
||||||
_styleUrl = styleUrl;
|
_styleUrl = styleUrl;
|
||||||
|
|
||||||
|
|||||||
@@ -83,6 +83,10 @@ class _RideMapState extends State<RideMap> {
|
|||||||
|
|
||||||
static const _fallback = im.LatLng(31.9539, 35.9106); // عمّان
|
static const _fallback = im.LatLng(31.9539, 35.9106); // عمّان
|
||||||
|
|
||||||
|
/// الستايلان مرفقان في `assets/` — منقولان من سيرو الميداني.
|
||||||
|
static const _lightStyleAsset = 'assets/style.json';
|
||||||
|
static const _darkStyleAsset = 'assets/style_dark.json';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void didUpdateWidget(RideMap old) {
|
void didUpdateWidget(RideMap old) {
|
||||||
super.didUpdateWidget(old);
|
super.didUpdateWidget(old);
|
||||||
@@ -200,9 +204,17 @@ class _RideMapState extends State<RideMap> {
|
|||||||
|
|
||||||
// الخريطة تبدّل ستايلها مع الثيم — خريطة نهارية في وضع ليلي تكسر
|
// الخريطة تبدّل ستايلها مع الثيم — خريطة نهارية في وضع ليلي تكسر
|
||||||
// الغرض (docs/26 §2). وتبديله يهدم مديري التعليقات، فيُصفَّر العَلَم.
|
// الغرض (docs/26 §2). وتبديله يهدم مديري التعليقات، فيُصفَّر العَلَم.
|
||||||
final styleUrl = isDark
|
//
|
||||||
? im.IntaleqStyles.obsidian(AppConfig.mapApiKey)
|
// ⚠️ **ستايل محلّي لا بعيد.** ستايل map-saas البعيد
|
||||||
: im.IntaleqStyles.light(AppConfig.mapApiKey);
|
// (`/api/maps/style.json?theme=light`) فيه **12 طبقة `symbol` تستعمل
|
||||||
|
// `icon-image` بلا `sprite` معرَّف** — وMapLibre الأصلي يرمي عندها
|
||||||
|
// `std::domain_error` فيُسقط التطبيق قبل أن يظهر إطار واحد
|
||||||
|
// (مثبت 2026-08-05). الستايلان المرفقان في `assets/` سليمان: بهما
|
||||||
|
// `sprite` وبلاطاتهما من `tiles.intaleqapp.com` نفسها.
|
||||||
|
//
|
||||||
|
// ومعها نكسب الإقلاع بلا انتظار شبكة — وهو ما يعنيه «الشكل حتمي من أول
|
||||||
|
// إقلاع» (docs/26 §1).
|
||||||
|
final styleUrl = isDark ? _darkStyleAsset : _lightStyleAsset;
|
||||||
if (_styleUrl != null && _styleUrl != styleUrl) _styleReady = false;
|
if (_styleUrl != null && _styleUrl != styleUrl) _styleReady = false;
|
||||||
_styleUrl = styleUrl;
|
_styleUrl = styleUrl;
|
||||||
|
|
||||||
|
|||||||
@@ -248,4 +248,24 @@ MapLibre يُنشئ «مديري التعليقات» عند تحميل الست
|
|||||||
ثلاثة نداءات منصّة. حارس `_syncing` إلزامي وإلا تتكدّس النداءات وتلتهم
|
ثلاثة نداءات منصّة. حارس `_syncing` إلزامي وإلا تتكدّس النداءات وتلتهم
|
||||||
الإطارات.
|
الإطارات.
|
||||||
|
|
||||||
|
### الستايل محلّي لا بعيد
|
||||||
|
|
||||||
|
**ممنوع تمرير `IntaleqStyles.light()`/`obsidian()` (الستايل البعيد).**
|
||||||
|
|
||||||
|
ستايل map-saas البعيد `/api/maps/style.json?theme=light` فيه **12 طبقة
|
||||||
|
`symbol` تستعمل `icon-image` بلا `sprite` معرَّف**، وMapLibre الأصلي يرمي
|
||||||
|
عندها `std::domain_error` فيُسقط التطبيق قبل ظهور إطار واحد. مثبت بفحص
|
||||||
|
الستايل مباشرةً 2026-08-05.
|
||||||
|
|
||||||
|
⚠️ الستايل المرفق **بالحزمة نفسها** (`packages/intaleq_maps/assets/style.json`)
|
||||||
|
مصابٌ بالعيب ذاته — sprite غائب و12 طبقة أيقونات. الوضع الليلي المرفق بها
|
||||||
|
سليم. فلا يُعتمد على افتراضات الحزمة أيضاً.
|
||||||
|
|
||||||
|
**المعتمد**: `assets/style.json` و`assets/style_dark.json` المنقولان من سيرو
|
||||||
|
الميداني — بهما `sprite` صحيح، وبلاطاتهما من `tiles.intaleqapp.com` نفسها،
|
||||||
|
ويقلعان بلا انتظار شبكة (docs/26 §1).
|
||||||
|
|
||||||
|
**الإصلاح الجذري على الخادم** (لا يخصّ التطبيق): إضافة `sprite` لستايل
|
||||||
|
map-saas البعيد، أو إزالة طبقات الأيقونات منه.
|
||||||
|
|
||||||
المرجع العملي: `apps/rider_new/lib/features/trip/view/widgets/ride_map.dart`.
|
المرجع العملي: `apps/rider_new/lib/features/trip/view/widgets/ride_map.dart`.
|
||||||
|
|||||||
Reference in New Issue
Block a user