| <!DOCTYPE html> | |
| <html> | |
| <head> | |
|   <!-- | |
|     If you are serving your web app in a path other than the root, change the | |
|     href value below to reflect the base path you are serving from. | |
|  | |
|     The path provided below has to start and end with a slash "/" in order for | |
|     it to work correctly. | |
|  | |
|     For more details: | |
|     * https://developer.mozilla.org/en-US/docs/Web/HTML/Element/base | |
|  | |
|     This is a placeholder for base href that will be replaced by the value of | |
|     the `--base-href` argument provided to `flutter build`. | |
|   --> | |
|   <base href="$FLUTTER_BASE_HREF"> | |
| 
 | |
|   <meta charset="UTF-8"> | |
|   <meta content="IE=Edge" http-equiv="X-UA-Compatible"> | |
|   <meta name="description" content="A new Flutter project."> | |
| 
 | |
|   <!-- iOS meta tags & icons --> | |
|   <meta name="apple-mobile-web-app-capable" content="yes"> | |
|   <meta name="apple-mobile-web-app-status-bar-style" content="black"> | |
|   <meta name="apple-mobile-web-app-title" content="mobile"> | |
|   <link rel="apple-touch-icon" href="icons/Icon-192.png"> | |
| 
 | |
|   <!-- Favicon --> | |
|   <link rel="icon" type="image/png" href="favicon.png"/> | |
| 
 | |
|   <title>mobile</title> | |
|   <link rel="manifest" href="manifest.json"> | |
| </head> | |
| <body> | |
|   <!-- This script installs service_worker.js to provide PWA functionality to | |
|        application. For more information, see: | |
|        https://developers.google.com/web/fundamentals/primers/service-workers --> | |
|   <script> | |
|     var serviceWorkerVersion = null; | |
|     var scriptLoaded = false; | |
|     function loadMainDartJs() { | |
|       if (scriptLoaded) { | |
|         return; | |
|       } | |
|       scriptLoaded = true; | |
|       var scriptTag = document.createElement('script'); | |
|       scriptTag.src = 'main.dart.js'; | |
|       scriptTag.type = 'application/javascript'; | |
|       document.body.append(scriptTag); | |
|     } | |
| 
 | |
|     if ('serviceWorker' in navigator) { | |
|       // Service workers are supported. Use them. | |
|       window.addEventListener('load', function () { | |
|         // Wait for registration to finish before dropping the <script> tag. | |
|         // Otherwise, the browser will load the script multiple times, | |
|         // potentially different versions. | |
|         var serviceWorkerUrl = 'flutter_service_worker.js?v=' + serviceWorkerVersion; | |
|         navigator.serviceWorker.register(serviceWorkerUrl) | |
|           .then((reg) => { | |
|             function waitForActivation(serviceWorker) { | |
|               serviceWorker.addEventListener('statechange', () => { | |
|                 if (serviceWorker.state == 'activated') { | |
|                   console.log('Installed new service worker.'); | |
|                   loadMainDartJs(); | |
|                 } | |
|               }); | |
|             } | |
|             if (!reg.active && (reg.installing || reg.waiting)) { | |
|               // No active web worker and we have installed or are installing | |
|               // one for the first time. Simply wait for it to activate. | |
|               waitForActivation(reg.installing || reg.waiting); | |
|             } else if (!reg.active.scriptURL.endsWith(serviceWorkerVersion)) { | |
|               // When the app updates the serviceWorkerVersion changes, so we | |
|               // need to ask the service worker to update. | |
|               console.log('New service worker available.'); | |
|               reg.update(); | |
|               waitForActivation(reg.installing); | |
|             } else { | |
|               // Existing service worker is still good. | |
|               console.log('Loading app from service worker.'); | |
|               loadMainDartJs(); | |
|             } | |
|           }); | |
| 
 | |
|         // If service worker doesn't succeed in a reasonable amount of time, | |
|         // fallback to plaint <script> tag. | |
|         setTimeout(() => { | |
|           if (!scriptLoaded) { | |
|             console.warn( | |
|               'Failed to load app from service worker. Falling back to plain <script> tag.', | |
|             ); | |
|             loadMainDartJs(); | |
|           } | |
|         }, 4000); | |
|       }); | |
|     } else { | |
|       // Service workers not supported. Just drop the <script> tag. | |
|       loadMainDartJs(); | |
|     } | |
|   </script> | |
| </body> | |
| </html>
 |