# رفع مشکل فیلترینگ دامنه‌های گوگل در وب اپلیکیشن ## مشکل هنگام استفاده از اینترنت داخلی ایران، دامنه‌های زیر فیلتر می‌شوند: - `www.gstatic.com` (CanvasKit و Firebase SDK) - `fonts.gstatic.com` (Google Fonts) این مسئله باعث می‌شد که اپلیکیشن وب لود نشود. ## راه‌حل پیاده‌سازی شده ### 1. محلی‌سازی CanvasKit فایل‌های CanvasKit (موتور رندرینگ Flutter) به صورت محلی در پوشه `web/canvaskit/` ذخیره شده‌اند: - `canvaskit.js` (86 KB) - `canvaskit.wasm` (5.7 MB) ### 2. محلی‌سازی Firebase SDK فایل‌های Firebase SDK در پوشه `web/firebase/` قرار دارند: - `firebase-app.js` (19 KB) - `firebase-messaging.js` (39 KB) ### 3. غیرفعال‌سازی Google Fonts Flutter به طور پیش‌فرض فونت Roboto را از Google Fonts دانلود می‌کند. این رو غیرفعال کردیم: **در `web/index.html`:** ```html ``` **در `web/flutter_bootstrap.js`:** ```javascript config: { canvasKitBaseUrl: "/canvaskit/", fontFallbackBaseUrl: "", // غیرفعال کردن Google Fonts } ``` ### 4. پیکربندی Flutter Bootstrap فایل `web/flutter_bootstrap.js` برای استفاده از فایل‌های محلی تنظیم شده است: ```javascript _flutter.loader.load({ config: { canvasKitBaseUrl: "/canvaskit/", }, // ... }); ``` ### 4. Error Handling و Fallback اگر لود اولیه با مشکل مواجه شود: 1. ابتدا سعی می‌کند با renderer پیش‌فرض (WebGL) اجرا شود 2. در صورت شکست، با HTML renderer تلاش می‌کند 3. در نهایت یک پیام دوستانه به کاربر نشان می‌دهد **مهم:** اگر هر کدام از فایل‌های CanvasKit، Firebase یا فونت‌ها fail شوند، اپ همچنان باز می‌شود و از fallback استفاده می‌کند: - CanvasKit fail → HTML renderer - Firebase fail → بدون نوتیفیکیشن - Font fail → فونت‌های سیستمی (Arial/Tahoma) ## بیلد کردن پروژه بعد از این تغییرات، برای بیلد وب استفاده کنید: ```bash flutter build web --release ``` **نکته:** در نسخه‌های جدید Flutter، آپشن `--web-renderer` حذف شده و Flutter به صورت خودکار بهترین renderer را انتخاب می‌کند. ## توجه مهم - فایل‌های محلی شده باید در گیت کامیت شوند - در صورت آپدیت Flutter، ممکن است نیاز به آپدیت فایل‌های CanvasKit باشد - اگر Firebase SDK آپدیت شد، فایل‌های محلی را هم آپدیت کنید ## تست پس از بیلد، اپلیکیشن باید در شرایط زیر کار کند: ✅ با اینترنت بین‌المللی ✅ با اینترنت داخلی (بدون دسترسی به gstatic.com) ✅ با فیلترشکن ✅ بدون فیلترشکن ## نسخه فایل‌های دانلود شده - CanvasKit: نسخه `13e658725ddaa270601426d1485636157e38c34c` - Firebase: نسخه `7.15.5`