- LocationPickerDialog: detecta ubicación del dispositivo, pin draggable, reverse geocoding para obtener dirección y ciudad - Dashboard: campo de dirección abre el mapa al tocar - index.html: carga Maps JS API (key pendiente de configurar) - pubspec: google_maps_flutter + geolocator Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
97 lines
2.6 KiB
HTML
97 lines
2.6 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<base href="$FLUTTER_BASE_HREF">
|
|
<meta charset="UTF-8">
|
|
<meta content="IE=Edge" http-equiv="X-UA-Compatible">
|
|
<meta name="description" content="ProsApp - Conecta con los mejores profesionales">
|
|
<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="ProsApp">
|
|
<link rel="apple-touch-icon" href="icons/Icon-192.png">
|
|
<link rel="icon" type="image/png" href="favicon.png"/>
|
|
<title>ProsApp</title>
|
|
<link rel="manifest" href="manifest.json">
|
|
|
|
<script type="text/javascript">
|
|
window.flutterWebRenderer = 'html';
|
|
</script>
|
|
<!-- Google Maps JS API — reemplazar GOOGLE_MAPS_API_KEY con la key real -->
|
|
<script src="https://maps.googleapis.com/maps/api/js?key=GOOGLE_MAPS_API_KEY"></script>
|
|
|
|
<style>
|
|
* { margin: 0; padding: 0; box-sizing: border-box; }
|
|
|
|
html, body {
|
|
height: 100%;
|
|
background-color: #42A4EF;
|
|
}
|
|
|
|
#splash {
|
|
position: fixed;
|
|
inset: 0;
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
justify-content: center;
|
|
background: linear-gradient(180deg, #42A4EF 0%, #1565C0 100%);
|
|
z-index: 9999;
|
|
transition: opacity 0.3s ease;
|
|
}
|
|
|
|
#splash .logo-box {
|
|
background: white;
|
|
border-radius: 16px;
|
|
padding: 14px 24px;
|
|
margin-bottom: 20px;
|
|
}
|
|
|
|
#splash img {
|
|
height: 48px;
|
|
display: block;
|
|
}
|
|
|
|
#splash .spinner {
|
|
width: 32px;
|
|
height: 32px;
|
|
border: 3px solid rgba(255,255,255,0.3);
|
|
border-top-color: white;
|
|
border-radius: 50%;
|
|
animation: spin 0.8s linear infinite;
|
|
}
|
|
|
|
@keyframes spin {
|
|
to { transform: rotate(360deg); }
|
|
}
|
|
|
|
#splash.hidden {
|
|
opacity: 0;
|
|
pointer-events: none;
|
|
}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
|
|
<div id="splash">
|
|
<div class="logo-box">
|
|
<img src="https://prosapp.co/img/logo_prosapp.png" alt="ProsApp"
|
|
onerror="this.style.display='none';this.nextElementSibling.style.display='block'">
|
|
<span style="display:none;font-size:22px;font-weight:bold;color:#42A4EF;font-family:sans-serif">ProsApp</span>
|
|
</div>
|
|
<div class="spinner"></div>
|
|
</div>
|
|
|
|
<script>
|
|
window.addEventListener('flutter-first-frame', function () {
|
|
var splash = document.getElementById('splash');
|
|
if (splash) {
|
|
splash.classList.add('hidden');
|
|
setTimeout(function () { splash.remove(); }, 350);
|
|
}
|
|
});
|
|
</script>
|
|
|
|
<script src="flutter_bootstrap.js" async></script>
|
|
</body>
|
|
</html>
|