fixed bugs
This commit is contained in:
@@ -0,0 +1,150 @@
|
||||
import 'dart:async';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
import 'login_page.dart';
|
||||
|
||||
class SplashPage extends StatefulWidget {
|
||||
const SplashPage({super.key});
|
||||
|
||||
@override
|
||||
State<SplashPage> createState() => _SplashPageState();
|
||||
}
|
||||
|
||||
class _SplashPageState extends State<SplashPage> {
|
||||
// rosso bordeaux ripreso dal cuore del logo YogaSoul
|
||||
static const Color kRed = Color(0xFFB01E28);
|
||||
|
||||
Timer? _timer;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
// dopo ~2.5s vai al login
|
||||
_timer = Timer(const Duration(milliseconds: 5000), _goToLogin);
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
_timer?.cancel();
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
void _goToLogin() {
|
||||
if (!mounted) return;
|
||||
Navigator.pushReplacement(
|
||||
context,
|
||||
MaterialPageRoute(builder: (_) => const LoginPage()),
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
// tocca lo schermo per saltare subito al login
|
||||
body: GestureDetector(
|
||||
onTap: _goToLogin,
|
||||
child: Stack(
|
||||
fit: StackFit.expand,
|
||||
children: [
|
||||
// ---- Foto di sfondo full-screen
|
||||
Image.asset('assets/images/splash_bg.png', fit: BoxFit.cover),
|
||||
|
||||
// ---- Contenuto (logo + testo) in alto
|
||||
SafeArea(
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.fromLTRB(24, 10, 24, 24),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
children: [
|
||||
const SizedBox(height: 8),
|
||||
|
||||
// Logo YogaSoul
|
||||
Image.asset(
|
||||
'assets/images/yogasoul_logo.png',
|
||||
height: 90,
|
||||
fit: BoxFit.contain,
|
||||
),
|
||||
|
||||
const SizedBox(height: 26),
|
||||
|
||||
// ---- Blocco testo su velo bianco morbido per leggibilità
|
||||
Container(
|
||||
padding: const EdgeInsets.symmetric(
|
||||
horizontal: 18,
|
||||
vertical: 16,
|
||||
),
|
||||
decoration: BoxDecoration(
|
||||
// velo bianco semitrasparente: stacca il testo dal cielo
|
||||
color: Colors.white.withOpacity(0.42),
|
||||
borderRadius: BorderRadius.circular(20),
|
||||
),
|
||||
child: Column(
|
||||
children: [
|
||||
// Titolo riga 1 (scuro)
|
||||
const Text(
|
||||
'Il tuo spazio.',
|
||||
textAlign: TextAlign.center,
|
||||
style: TextStyle(
|
||||
fontSize: 30,
|
||||
height: 1.1,
|
||||
fontWeight: FontWeight.w900,
|
||||
color: Color(0xFF1F1F1F),
|
||||
),
|
||||
),
|
||||
// Titolo riga 2 (rosso bordeaux)
|
||||
const Text(
|
||||
'La tua energia.',
|
||||
textAlign: TextAlign.center,
|
||||
style: TextStyle(
|
||||
fontSize: 30,
|
||||
height: 1.1,
|
||||
fontWeight: FontWeight.w900,
|
||||
color: kRed,
|
||||
),
|
||||
),
|
||||
|
||||
const SizedBox(height: 14),
|
||||
|
||||
// Sottotitolo
|
||||
const Text(
|
||||
'Ti diamo il benvenuto in YogiBook,\n'
|
||||
'l’app della scuola YogaSoul — Seregno.\n'
|
||||
'Ti accompagna nelle tue lezioni e nei tuoi pacchetti.',
|
||||
textAlign: TextAlign.center,
|
||||
style: TextStyle(
|
||||
fontSize: 14,
|
||||
height: 1.4,
|
||||
fontWeight: FontWeight.w600,
|
||||
color: Color(0xFF2A2A2A),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
// ---- Indicatore caricamento in basso
|
||||
const Positioned(
|
||||
left: 0,
|
||||
right: 0,
|
||||
bottom: 34,
|
||||
child: Center(
|
||||
child: SizedBox(
|
||||
width: 26,
|
||||
height: 26,
|
||||
child: CircularProgressIndicator(
|
||||
strokeWidth: 2.4,
|
||||
valueColor: AlwaysStoppedAnimation(Colors.white),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user