3.4 KiB
رفع مشکل فیلترینگ دامنههای گوگل در وب اپلیکیشن
مشکل
هنگام استفاده از اینترنت داخلی ایران، دامنههای زیر فیلتر میشوند:
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:
<style>
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 400;
src: local('Arial'), local('Tahoma');
}
</style>
در web/flutter_bootstrap.js:
config: {
canvasKitBaseUrl: "/canvaskit/",
fontFallbackBaseUrl: "", // غیرفعال کردن Google Fonts
}
4. پیکربندی Flutter Bootstrap
فایل web/flutter_bootstrap.js برای استفاده از فایلهای محلی تنظیم شده است:
_flutter.loader.load({
config: {
canvasKitBaseUrl: "/canvaskit/",
},
// ...
});
4. Error Handling و Fallback
اگر لود اولیه با مشکل مواجه شود:
- ابتدا سعی میکند با renderer پیشفرض (WebGL) اجرا شود
- در صورت شکست، با HTML renderer تلاش میکند
- در نهایت یک پیام دوستانه به کاربر نشان میدهد
مهم: اگر هر کدام از فایلهای CanvasKit، Firebase یا فونتها fail شوند، اپ همچنان باز میشود و از fallback استفاده میکند:
- CanvasKit fail → HTML renderer
- Firebase fail → بدون نوتیفیکیشن
- Font fail → فونتهای سیستمی (Arial/Tahoma)
بیلد کردن پروژه
بعد از این تغییرات، برای بیلد وب استفاده کنید:
flutter build web --release
نکته: در نسخههای جدید Flutter، آپشن --web-renderer حذف شده و Flutter به صورت خودکار بهترین renderer را انتخاب میکند.
توجه مهم
- فایلهای محلی شده باید در گیت کامیت شوند
- در صورت آپدیت Flutter، ممکن است نیاز به آپدیت فایلهای CanvasKit باشد
- اگر Firebase SDK آپدیت شد، فایلهای محلی را هم آپدیت کنید
تست
پس از بیلد، اپلیکیشن باید در شرایط زیر کار کند: ✅ با اینترنت بینالمللی ✅ با اینترنت داخلی (بدون دسترسی به gstatic.com) ✅ با فیلترشکن ✅ بدون فیلترشکن
نسخه فایلهای دانلود شده
- CanvasKit: نسخه
13e658725ddaa270601426d1485636157e38c34c - Firebase: نسخه
7.15.5