| <!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 |
| --> |
| <base href="/"> |
| |
| <meta charset="UTF-8"> |
| <meta content="IE=Edge" http-equiv="X-UA-Compatible"> |
| <meta name="description" content="A resource to help developers evaluate and use Flutter."> |
| |
| <!-- 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="gallery"> |
| <link rel="apple-touch-icon" href="icons/Icon-192.png"> |
| |
| <!-- Favicon --> |
| <link rel="icon" type="image/png" href="favicon.png" sizes="32x32"/> |
| |
| <title>Flutter Gallery</title> |
| <style> |
| body { |
| background-color: #030303; |
| } |
| </style> |
| <link rel="manifest" href="manifest.json"> |
| <script> |
| let searchParams = new URLSearchParams(window.location.search); |
| if (searchParams.has('renderer')) { |
| window.flutterWebRenderer = searchParams.get('renderer'); |
| console.log(searchParams.get('renderer') + ' renderer requested in the URL'); |
| } |
| |
| // The value below is injected by flutter build, do not touch. |
| var serviceWorkerVersion = null; |
| </script> |
| <script src="flutter.js" defer></script> |
| </head> |
| <body> |
| |
| <div id="loading"> |
| <style> |
| body { |
| inset: 0; overflow: hidden; |
| margin: 0; padding: 0; |
| position: fixed; |
| } |
| #loading { |
| align-items: center; |
| display: flex; |
| height: 100%; |
| justify-content: center; |
| width: 100%; |
| } |
| #loading img { |
| animation: 1s ease-in-out 0s infinite alternate breathe; |
| opacity: .66; |
| transition: opacity .4s; |
| } |
| #loading.main_done img { |
| opacity: 1; |
| } |
| #loading.init_done img { |
| animation: .33s ease-in-out 0s 1 forwards zooooom; |
| opacity: .05; |
| } |
| @keyframes breathe { from { transform: scale(1) } to { transform: scale(0.95)}} |
| @keyframes zooooom { from { transform: scale(1) } to { transform: scale(10)}} |
| </style> |
| <img src="icons/Icon-192.png" alt="Loading indicator..." /> |
| </div> |
| |
| <script> |
| window.addEventListener('load', function() { |
| var loading = document.querySelector('#loading'); |
| _flutter.loader.loadEntrypoint({ |
| serviceWorker: { |
| serviceWorkerVersion: serviceWorkerVersion, |
| } |
| }).then(function(engineInitializer) { |
| loading.classList.add('main_done'); |
| return engineInitializer.initializeEngine(); |
| }).then(function(appRunner) { |
| loading.classList.add('init_done'); |
| return appRunner.runApp(); |
| }).then(function(app) { |
| // Wait a few milliseconds so users can see the "zoooom" animation |
| // before getting rid of the "loading" div. |
| window.setTimeout(function() { |
| loading.remove(); |
| }, 200); |
| }); |
| }); |
| </script> |
| |
| </body> |
| </html> |