didvan-app/web/flutter_bootstrap.js

55 lines
2.2 KiB
JavaScript

{{flutter_js}}
{{flutter_build_config}}
// Override buildConfig to force local CanvasKit usage
if (window._flutter && window._flutter.buildConfig) {
// Remove engineRevision to prevent CDN usage
delete window._flutter.buildConfig.engineRevision;
// Add useLocalCanvasKit flag
window._flutter.buildConfig.useLocalCanvasKit = true;
}
// Override the internal canvaskit path resolution function
if (window._flutter && window._flutter.loader) {
const originalLoad = window._flutter.loader.load;
window._flutter.loader.load = function(options) {
options = options || {};
options.config = options.config || {};
// Force local CanvasKit
options.config.canvasKitBaseUrl = "/canvaskit/";
// Disable Google Fonts
options.config.canvasKitForceCpuOnly = false;
return originalLoad.call(this, options);
};
}
// Configure Flutter to use local CanvasKit files instead of CDN
_flutter.loader.load({
config: {
// Use local CanvasKit files to avoid issues with filtered domains
canvasKitBaseUrl: "/canvaskit/",
// Don't fetch from Google CDN
canvasKitForceCpuOnly: false,
},
onEntrypointLoaded: async function(engineInitializer) {
try {
let appRunner = await engineInitializer.initializeEngine();
await appRunner.runApp();
} catch (error) {
console.error('Failed to initialize Flutter app:', error);
// Fallback: Try with CPU-only rendering if WebGL fails
try {
let appRunner = await engineInitializer.initializeEngine({
renderer: "html",
});
await appRunner.runApp();
} catch (fallbackError) {
console.error('Fallback initialization also failed:', fallbackError);
// Show a user-friendly error message
document.body.innerHTML = '<div style="display:flex;justify-content:center;align-items:center;height:100vh;font-family:Arial"><div style="text-align:center;"><h2>مشکل در بارگذاری برنامه</h2><p>لطفا اتصال اینترنت خود را بررسی کنید و صفحه را مجددا بارگذاری کنید.</p><button onclick="location.reload()" style="padding:10px 20px;font-size:16px;cursor:pointer;">تلاش مجدد</button></div></div>';
}
}
}
});